首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复android工具栏中的重复项目(需要删除工具栏上的菜单项)?

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

Stack Overflow用户
提问于 2018-12-12 03:49:32
回答 1查看 290关注 0票数 0

我试图隐藏一些菜单项目位于android工具栏。我已经实现了以下代码:

代码语言:javascript
复制
MenuItem beaconIconMenuItem = 
toolbar.getMenu().findItem(R.id.booklist_mylibrary_menu_beacon);
                beaconIconMenuItem.setVisible(false);

当我试图编译代码时,没有错误,但是不是删除工具栏,而是删除两次。

这是我的源代码:

代码语言:javascript
复制
 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);


        }

这是相关java类的xml文件:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-12 04:01:50

你在给菜单充气两次。在if语句之前一次,在if语句中一次

代码语言:javascript
复制
toolbar.inflateMenu(R.menu.booklist_mylibrary_menu);

您将在if语句之前和if语句中调用此语句。

从if语句中删除它。

代码语言:javascript
复制
    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上执行kpm一样,所以我将把它转换成一个开关,并清理您的代码。现在它应该看起来像

代码语言:javascript
复制
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;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53735786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档