如何从片段中隐藏菜单项?

use*_*843 2 android fragment menuitem

我想从我的导航抽屉中的菜单中隐藏一个菜单项。我尝试使用 setHasOptionsMenu(true) 然后添加方法

public boolean onPrepareOptionsMenu(Menu menu){
    //this is where i tried to hide the item
    menu.findItem(R.id.item).setVisible(false);
}
Run Code Online (Sandbox Code Playgroud)

但它说那是空的。

有什么建议?

Roh*_*pta 5

您应该在片段的 onCreate() 方法中调用 setHasOptionsMenu(true) 以允许片段处理菜单项。所以你可以在你的片段中做这样的事情:

@Override public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
 }
Run Code Online (Sandbox Code Playgroud)

然后,您可以覆盖片段中的 onPrepareOptionsMenu 方法:

@Override
public void onPrepareOptionsMenu(Menu menu) {
    super.onPrepareOptionsMenu(menu);
// You can hide the state of the menu item here if you call getActivity().supportInvalidateOptionsMenu(); somewhere in your code
    MenuItem menuItem = menu.findItem(R.id.item); 
    menuItem.setVisible(false);
    }
Run Code Online (Sandbox Code Playgroud)