如何更改不同片段中顶部栏中的菜单项?

How can I change menu items in top bar in different fragments?

我使用 MaterialToolBar 来显示 TopAppBar。 我有三个片段,在显示每个片段时,我想在顶部菜单中显示不同的项目。怎么做?

试试这个代码

<com.google.android.material.appbar.MaterialToolbar
        android:id="@+id/toolbar"
        android:layout_width="0dp"
        android:layout_height="?attr/actionBarSize"
        app:navigationIcon="@drawable/ic_menu"
        app:menu="@menu/main_menu"/>

然后这个

toolbar.setOnMenuItemClickListener {
            // .. DO SOMETHING HERE
            false
        }

而不是 toolbar.setOnMenuItemClickListener 你需要使用这个 :

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.game_menu, menu);
    return true;
}

有关详细信息,请查看 答案。

快速概览每次您需要更改菜单时都需要扩充不同的菜单资源。您还需要为需要执行的自定义操作设置 OnOptionsItemSelected

您可能还需要在 onCreate 方法中为片段 setHasOptionsMenu(true); 添加此内容。