如何修复 android 工具栏中的重复项目,(需要删除工具栏上的菜单项)?

How to fix duplicate item in android tool bar ,(need to remove menu items on toolbar)?

我试图隐藏位于 android 工具栏中的一些菜单项。 我已经实现了这段代码:

MenuItem beaconIconMenuItem = 
toolbar.getMenu().findItem(R.id.booklist_mylibrary_menu_beacon);
                beaconIconMenuItem.setVisible(false);

当我尝试编译代码时,没有出现错误,但它并没有删除工具栏,而是出现了两次。

这是我的源代码:

 private void setupToolbar() {
        toolbar = (Toolbar) getView().findViewById(R.id.toolbar);



        if (getResources().getString(R.string.app_name).equalsIgnoreCase("PNM e-Reader")){
            toolbar.setTitle("My Books");



        }else {
            toolbar.setTitle(getString(R.string.booklist_drawer_mylibrary));



        }
        toolbar.inflateMenu(R.menu.booklist_mylibrary_menu);


        // if kpm app , hide beacon icon on toolbar
        if (getResources().getString(R.string.app_name).equalsIgnoreCase("KPM")){
            toolbar.inflateMenu(R.menu.booklist_mylibrary_menu);
            MenuItem beaconIconMenuItem = toolbar.getMenu().findItem(R.id.booklist_mylibrary_menu_beacon);
            beaconIconMenuItem.setVisible(false);


            //if kpm app , hide filter icon on toolbar
        }else if
                (getResources().getString(R.string.app_name).equalsIgnoreCase("KPM")){
                toolbar.inflateMenu(R.menu.booklist_mylibrary_menu);
                MenuItem filterMenuItem = toolbar.getMenu().findItem(R.id.common_menu_filter);
                filterMenuItem.setVisible(false);

            //if kpm app , hide new collection selection under settings icon on toolbar

        }else  if
                (getResources().getString(R.string.app_name).equalsIgnoreCase("KPM")){
                toolbar.inflateMenu(R.menu.booklist_mylibrary_menu);
                MenuItem newcollectionMenuItem = toolbar.getMenu().findItem(R.id.booklist_mylibrary_menu_addtab);
                newcollectionMenuItem.setVisible(false);


        }

这是 xml 相关文件 java class:

<menu xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/booklist_mylibrary_menu_beacon"
        android:title="@string/beacon_switch"
        android:id="@+id/common_menu_filter"
        android:title="@string/common_filter"
        android:id="@+id/booklist_mylibrary_menu_addtab"
        android:title="@string/booklist_tab_add"
        app:showAsAction="never" />

    <item

</menu>

您将菜单膨胀了两次。一次在 if 语句之前,一次在 if 语句内部

toolbar.inflateMenu(R.menu.booklist_mylibrary_menu);

您在 if 语句之前和 if 语句内部调用它。

从 if 语句中删除它。

    Resources resources = getResources();
    if (resources.getString(R.string.app_name).equalsIgnoreCase("KPM")) {
        MenuItem beaconIconMenuItem = toolbar.getMenu().findItem(R.id.booklist_mylibrary_menu_beacon);
        beaconIconMenuItem.setVisible(false);
        //if kpm app , hide filter icon on toolbar
    } else if (resources.getString(R.string.app_name).equalsIgnoreCase("KPM")) {
        MenuItem filterMenuItem = toolbar.getMenu().findItem(R.id.common_menu_filter);
        filterMenuItem.setVisible(false);
        //if kpm app , hide new collection selection under settings icon on toolbar
    } else if (resources.getString(R.string.app_name).equalsIgnoreCase("KPM")) {
        MenuItem newcollectionMenuItem = toolbar.getMenu().findItem(R.id.booklist_mylibrary_menu_addtab);
        newcollectionMenuItem.setVisible(false);
    }

看起来你只在 kpm 上做 else-if 所以我会把它转换成一个开关并清理你的代码。现在它应该看起来像

private void setupToolbar() {
    toolbar = (Toolbar) getView().findViewById(R.id.toolbar);
    String appName = getResources().getString(R.string.app_name).toLowerCase();
    toolbar.setTitle(appName.equals("pnm e-reader") ? "My Books" : getString(R.string.booklist_drawer_mylibrary));
    toolbar.inflateMenu(R.menu.booklist_mylibrary_menu);
    switch (appName) {
        case "kpm":
            Menu menu = toolbar.getMenu();

            MenuItem beaconIconMenuItem = menu.findItem(R.id.booklist_mylibrary_menu_beacon);
            MenuItem filterMenuItem = menu.findItem(R.id.common_menu_filter);
            MenuItem newcollectionMenuItem = menu.findItem(R.id.booklist_mylibrary_menu_addtab);

            beaconIconMenuItem.setVisible(false);
            newcollectionMenuItem.setVisible(false);
            filterMenuItem.setVisible(false);
            break;
    }
}