在工具栏上显示活动和片段的不同菜单选项

ant2009
Android Studio 1.4

我有一个工具栏,该工具栏需要在其中填充activity_main.xml我有一个名为main.xml充气的菜单,上面只有一个图标可以显示。

当用户单击以打开片段时。我有另一个friends.xml带有2个图标的菜单

当我在片段中向好友菜单充气时,它仍显示菜单中的图标main.xml

我认为夸大工具栏上的新菜单会删除现有菜单。

这是main.xml菜单的屏幕截图。显示查找图标在此处输入图片说明

这是该片段的屏幕截图,您可以看到查找图标仍然存在。

在此处输入图片说明 activity_main.xml 附带工具栏

<android.support.v4.widget.DrawerLayout
    android:id="@+id/drawer_layout"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <include
            android:id="@+id/tbMain"
            layout="@layout/app_bar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <FrameLayout
            android:id="@+id/content_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:clickable="true"/>
    </LinearLayout>
</android.support.v4.widget.DrawerLayout>

这是我在MainActivity.java中创建菜单的代码

    private void setupToolBar() {
        mToolbar = (Toolbar)findViewById(R.id.tbMain);
        setSupportActionBar(mToolbar);

        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        return super.onOptionsItemSelected(item);
    }

在我的片段中,我有这个,如您所见,我正在膨胀friends.xml菜单。

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

非常感谢您的任何建议,

苏菲安

我不确定您是否可以使用onCreateOptionsMenu()我认为您最好的选择是onPrepareOptionsMenu()

您可以通过仅编写getActivity().invalidateOptionsMenu()Fragment的来强制Android刷新选项菜单onResume()

因此,您onPrepareOptionsMenu()将看起来像:

@Override
public void onPrepareOptionsMenu(Menu menu) {
    super.onPrepareOptionsMenu(menu);
    menu.clear();    //remove all items
    getActivity().getMenuInflater().inflate(R.menu.menu_fragment, menu);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章