3

さて、これはかなり具体的なものです。私の ShareActionProvider はフォーラムの投稿で使用されています。それは機能します(面倒なFacebookは別として、それはよく知られている問題であることを理解しています)。しかし、ポップアップ メニューから共有オプションを選択すると、2 つのリストが上下に表示されます。

リストが 1 つだけ表示されるように修正するにはどうすればよいですか?

編集:この問題を参照して、SOには少なくとも2つの他の質問があります:

PopupMenu で ShareActionProvider を使用していますが、2 つの PopupMenu を表示していますか?</a>

PopupMenu から ShareActionProvider を呼び出す

ここに私のコードがあります: xml のメニュー項目

    <item
    android:id="@+id/menu_community_overflow_share"
    android:title="@string/menu_share"
    app:actionProviderClass="android.support.v7.widget.ShareActionProvider"
    android:orderInCategory="1"
    app:showAsAction="never" />

ジャワ

    private void share(MenuItem item) {
    mShareActionProvider = (ShareActionProvider)MenuItemCompat.getActionProvider(item);

    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_TEXT, "Here's a message originally posted by " + mClickedMessage.getFirstName()
            + " " + mClickedMessage.getLastName() + ": " + mClickedMessage.getTheMessage() + "\n\n");
    sendIntent.setType("text/plain");

    setShareIntent(sendIntent);
}

// Call to update the share intent
private void setShareIntent(Intent shareIntent) {
    if (mShareActionProvider != null) {
        mShareActionProvider.setShareIntent(shareIntent);
    }
}

そして、ここにいくつかの画像があります: 共有リストが最初に作成されます 共有リストが最初に作成されます

[すべて見る] をクリックした場合

[すべて見る] をクリックした場合

リストスクロール時

リストスクロール時

うまくいけば、問題は明確です。また、アイコンをクリックできないことに注意してください。クリックすると、リストの外側をクリックしたように動作し、リストが強制終了されます。

4

2 に答える 2

0

そこで、基本的に ShareActionProvider を、同じアクティビティを同じインテント フィルターで取得する新しいクラスに置き換える、ShareActionAdapter という独自のソリューションを思いつきました。ただし、関連するスニペットは次のとおりです。

 Intent intent = new Intent(Intent.ACTION_SEND);
 intent.setType("text/plain");
 PackageManager pm = context.getPackageManager();
 m_list = new ArrayList<>(pm.queryIntentActivities(intent, PackageManager.GET_RESOLVED_FILTER));

ポップアップ エクスペリエンスを模倣する完全な要点は、ここにあります。

于 2015-01-27T20:03:09.720 に答える