在Action Bar上添加了两次ShareActionProvider共享按钮

时间:2015-07-03 10:13:30

标签: 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>

片段:

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

我只在片段内部而不是在活动中给菜单充气。

1 个答案:

答案 0 :(得分:1)

我有两个问题:

  1. createChooser()创建新图标
  2. 必须添加setShareHistoryFileName(null);以防止显示另一个图标。
  3. 所以最终的代码如下:

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