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

时间:2016-09-22 04:50:33

标签: android android-fragments menu menuitem

我只想在menu设置action bar。它工作但是以错误的方式。   像这样: enter image description here

enter image description here

我几乎整个晚上都搜索了这个问题,但没有找到任何答案。 这是片段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());
        }

这是活动的代码:

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>

以下是我的活动布局:

<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>

有人能帮助我吗?

2 个答案:

答案 0 :(得分:1)

片段onCreate视图

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

答案 1 :(得分:0)

您希望菜单栏看起来如何?
所以,现在你有两个'分享'图标,后跟一个'更多'图标,一些空白区域(或更暗的颜色)。
请更具描述性。