android - 带有 ShareActionProvider 的共享按钮在操作栏上添加了两次

标签 android android-fragments android-actionbar android-sharing

<分区>

操作栏中的分享按钮有问题。

截图:

enter image description here

如您所见,右侧有两个图标。但我只添加了一个不活动的图标(第一个)。第二个是活跃的,做我想做的(分享内容)。 因此,我只想要第一个图标具有第二个图标的行为。

第二个图标哪里来的??!!

菜单:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/animation_detail_share"
        android:title="@string/share"
        android:showAsAction="ifRoom"
        android:actionProviderClass=
            "android.widget.ShareActionProvider"
        />
</menu>

fragment :

@Override
public void onCreate(Bundle savedInstanceState) {
    setHasOptionsMenu(true);
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    return inflater.inflate(R.layout.fragment_inplace_animation_details, container, false);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.animation_detail_menu, menu);

    MenuItem item = menu.findItem(R.id.animation_detail_share);

    ShareActionProvider mShareActionProvider = (ShareActionProvider) item.getActionProvider();

    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
    sendIntent.setType("text/plain");

    if(mShareActionProvider != null) {

        mShareActionProvider.setShareIntent(Intent.createChooser(sendIntent, getResources().getText(R.string.share)));
    }
}

我只在 fragment 中展开菜单,而不是在 activity 中。

最佳答案

我在这里遇到了两个问题:

  1. createChooser() 创建新图标
  2. 必须添加 setShareHistoryFileName(null); 以防止显示另一个图标。

所以最终的代码是这样的:

...
mShareActionProvider.setShareHistoryFileName(null);
mShareActionProvider.setShareIntent(sendIntent);
...

关于android - 带有 ShareActionProvider 的共享按钮在操作栏上添加了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31204233/

相关文章:

android - 具有向后兼容性 android 的抽屉导航

android - 使用当前汇率在 Android 中将 INR 转换为美元货币?

java - 如何更改 Android Activity 的背景颜色

android - 在Android Chrome上隐藏在键盘后面的输入文本框

android - 列表 fragment : prevent race condition between getListView() and onDestroyView()

android - 如何禁用 FragmentStatePagerAdapter 上的滑动?

java - 类播异常 : Fragment_main cannot be cast to fragment activity android

android - 膨胀类 fragment Android Map v2 时出错

android - 如何在 SherlockFragmentActivity 类中设置 actionbarsherlock 的 CustomView

android - 操作栏位置问题