Как исправить дубликат элемента в панели инструментов Android, (необходимо удалить элементы меню на панели инструментов)? - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь скрыть несколько пунктов меню, расположенных на панели инструментов 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:

<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>

1 Ответ

0 голосов
/ 12 декабря 2018

Вы надуваете меню дважды.Один раз перед оператором 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);
    }

Похоже, вы делаете только else-if на kpm, поэтому я просто преобразую его в коммутатор и уберу ваш код.теперь это должно выглядеть как

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;
    }
}
...