始终在 Fragment 中显示双倍时间菜单项

Always display double time menu item at Fragment

我只想在 action bar 设置一个 menu。它有效但以错误的方式。 像这样:

我几乎找了一晚上的问题,但没有找到任何答案。 这是我在 onCreatOptionsMenu 方法的代码片段:

 public void onCreateOptionsMenu(Menu menu,MenuInflater inflater) {
            super.onCreateOptionsMenu(menu,inflater);
            inflater.inflate(R.menu.menu_detail,menu);
            MenuItem shareItem = menu.findItem(R.id.menu_item_share);
            ShareActionProvider mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(shareItem);
            mShareActionProvider.setShareIntent(createShareForecastIntent());
        }

这里是 activity 的代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_detail);
    //getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportFragmentManager().beginTransaction()
            .add(R.id.detailfragment, new DetailActivityFragment())
            .commit();
}

这是我的菜单XML:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
       tools:context="com.example.android.sunshine.app.DetailActivity.DetailActivityFragment">
<item
    android:id="@+id/menu_item_share"
    app:showAsAction="ifRoom"
    android:title="Share"
    app:actionProviderClass="android.support.v7.widget.ShareActionProvider"         />
   <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:title="@string/action_settings"
        app:showAsAction="never" />
</menu>

这是我的 activity 布局:

<fragment 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/detailfragment"
                                android:name="com.example.android.sunshine.app.DetailActivity$DetailActivityFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:layout="@layout/fragment_detail"
    tools:ignore="MergeRootFrame"/>

片段布局:

<FrameLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        >
        <TextView
            android:id="@+id/detailText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="hello boy"/>
</FrameLayout>

有人可以帮我吗?

您希望您的菜单栏看起来像什么?
所以,现在你有两个 'share' 图标,后面跟着一个 'more' 图标,还有一些空的 space(或更深的颜色)。
请多描述一些。

在片段中创建视图

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_layout, container, false);    
        setHasOptionsMenu(true);
        return rootView;   

}

并在 onCreateOptionsMenu

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