如何隐藏片段上的菜单(正在从布局中替换)?

How to hide menu on fragment (which is being replaced from the layout)?

我已经检查并尝试了所有可能的代码,但这些代码对我不起作用,因为我只是更换布局,没有不同 toolbar.I 我正在使用 fragmentsNavigationDrawernavigationdrawerlistview,单击列表项时,它会用以下片段替换布局。但是我如何隐藏 menu 或根据出现的不同布局修改它?

由于您没有提供您尝试过的代码,所以很难说什么可行。

我在一个也有 NavigationDrawer 的应用程序中工作,对我来说,不同之处在于在每个片段的 onCreateOptionsMenu 中调用 menu.clear()

示例代码如下所示:

@Override
public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    if (!mNavigationDrawerIsOpened) {
        // Clear the menu from menuitems added from other fragments
        menu.clear();

        // Inflate your new menu
        inflater.inflate(R.menu.new_fragment, menu);

        // get the menu items of that new menu
        MenuItem item = menu.findItem(R.id.action_traffic_spinner);
    }
}

如果您想从 Fragment 控制选项菜单,您需要在 FragmentonCreate 中调用 setHasOptionsMenu:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
}

然后您可以添加、删除或清除覆盖 onCreateOptionsMenu 的菜单。例如,此代码删除选项菜单中的每个项目:

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

对我有用,你可以试试这个代码

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }

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



 @Override
    public void onPrepareOptionsMenu(Menu menu) {
        super.onPrepareOptionsMenu(menu);
        menu.findItem(R.id.action_cart).setVisible(false);
        menu.findItem(R.id.action_search).setVisible(false);
        menu.findItem(R.id.overflow).setVisible(false);
    }