I Use ShareActionProvider in PopupMenu, but show two PopupMenu?
Asked Answered
S

1

6

I use a ShareActionProvider in a PopupMenu, but when I click the share menu item, it shows two PopupMenus on the screen, one covered by the other. And one shows the application icon and name, the other one only shows the application name.

It works fine except this problem...
How can I fix it?

P.S.: please forgive me for my bad expression

My code is:

PopupMenu popup = new PopupMenu(this, button);
popup.getMenuInflater().inflate(R.menu.scrawl_popup_menu, popup.getMenu());
MenuItem overflowItem = popup.getMenu().findItem(R.id.popup_share);
ShareActionProvider overflowProvider =
    (ShareActionProvider) overflowItem.getActionProvider();
overflowProvider.setShareHistoryFileName(
    ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME);
overflowProvider.setShareIntent(createShareIntent());

menu.xml is:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/popup_clear"
        android:icon="@drawable/ic_menu_clear"
        android:title="@string/popup_menu_clear" />
    <item android:id="@+id/popup_insert_bg"
        android:icon="@drawable/ic_menu_insert_bg"
        android:title="@string/popup_menu_insert_bg"/>
    <item android:id="@+id/popup_share"
        android:icon="@android:drawable/ic_menu_share"
        android:title="@string/popup_menu_share"
        android:actionProviderClass="android.widget.ShareActionProvider">
    </item>
</menu>
Sulcate answered 15/8, 2012 at 8:59 Comment(1)
Totally bizarre problem, with multiple questions on here about it and absolutely no answers! Heh!Taco
A
0

I had to use startActivity(getShareIntent("/status.jpg")); This doesn't work exactly as you expect. However, it can be used for the same purpose. Hope it help.

private Intent getShareIntent(String filePath) {
        Intent shareIntent = new Intent(Intent.ACTION_SEND);

        File sdCard = Environment.getExternalStorageDirectory();

        File sharedFile = new File(sdCard + sharePath);
        Uri uri = Uri.fromFile(sharedFile);

        shareIntent.setType("image/*");
        shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
        return shareIntent;
    }

However, finally I moved to use action bar with Selection patten instead: http://developer.android.com/design/patterns/selection.html

Aurify answered 26/4, 2015 at 12:48 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.