ActionBar 上的共享按钮出现两次

Share Button on ActionBar Appears Twice

我在操作栏上创建了一个共享按钮 - 但它似乎出现了两次。

菜单XML文件如下:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/action_share"
        android:title="@string/action_share"
        app:showAsAction="always"
        app:actionProviderClass="android.support.v7.widget.ShareActionProvider"   
    />

</menu>

并在onCreateOptionsMenu视图中实例化。

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

    MenuItem menuItem = menu.findItem(R.id.action_share);

    mShareActionProvider =
            (ShareActionProvider) MenuItemCompat.getActionProvider(menuItem);

    if(mShareActionProvider != null && !mForecastString.isEmpty()){
        mShareActionProvider.setShareIntent(createShareForecastIntent());
    } else{
        Log.d(LOG_TAG, "Share Action provider is null?");
    }

    super.onCreateOptionsMenu(menu,inflater);
}

如果仅定义、扩充和实例化一次,共享按钮怎么会出现两次?

在展开菜单选项之前使用 menu.clear();

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

    MenuItem menuItem = menu.findItem(R.id.action_share);

    mShareActionProvider =
            (ShareActionProvider) MenuItemCompat.getActionProvider(menuItem);

    if(mShareActionProvider != null && !mForecastString.isEmpty()){
        mShareActionProvider.setShareIntent(createShareForecastIntent());
    } else{
        Log.d(LOG_TAG, "Share Action provider is null?");
    }

    super.onCreateOptionsMenu(menu,inflater);
}

您在 Activity 和 Fragment 中两次膨胀菜单。

删除一个 inflation 应该可以解决问题。

这是由于重复 inflation 菜单造成的。 在 inflation.

之前使用 menu.clear()
    @Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
     menu.clear();
    inflater.inflate(R.menu.my_menu_layout, menu);
 }