3

好的,这是一个非常具体的问题:我的 ShareActionProvider 正用于论坛中的帖子。它有效(除了讨厌的 facebook,但我知道这是一个众所周知的问题)。但是,当我从弹出菜单中选择共享选项时,会绘制两个列表,一个在另一个之上。

如何修复它,以便只显示一个列表?

编辑:关于这个问题,至少存在另外两个问题:

我在 PopupMenu 中使用 ShareActionProvider,但显示两个 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

1

这是我最终使用的代码(我什至不确定我很久以前是如何计算出来的),但它可能会对某人有所帮助。

解决方案并不理想,它删除了重复的列表,但留下了无聊的列表(没有图标),我有点想要另一个。如果我记得这种分享方法已经过时了,如果有人能对这个问题有更多的了解,那就太好了。

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 Sent via Loylap");
        sendIntent.setType("text/plain");
        startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.send_post_to)));
    }
于 2014-06-06T14:03:12.593 回答
0

所以我想出了自己的解决方案,基本上用一个新类替换 ShareActionProvider ,该类使用相同的意图过滤器获取相同的 Activites,称为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 回答