6

PopupMenu で ShareActionProvider を使用していますが、共有メニュー項目をクリックすると、画面に 2 つの PopupMenus が表示され、一方が他方に重なって表示されます。1 つはアプリケーションのアイコンと名前を表示し、もう 1 つはアプリケーション名のみを表示します。

この問題以外は正常に動作します...
どうすれば修正できますか?

PS:私の悪い表現を許してください

私のコードは次のとおりです。

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 は次のとおりです。

<?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>
4

1 に答える 1

0

startActivity(getShareIntent("/status.jpg")); を使用する必要がありました。これは、期待どおりには機能しません。ただし、同じ目的で使用できます。それが役立つことを願っています。

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;
    }

ただし、最終的には代わりに選択パターンでアクションバーを使用するようになりました: http://developer.android.com/design/patterns/selection.html

于 2015-04-26T12:48:38.273 に答える