简体   繁体   English

导航查看所选项目

[英]NavigationView Selected Item

I have this XML. 我有这个XML。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:checkableBehavior="single">
        <item
            android:id="@+id/nav_home"
            android:checked="true"
            android:icon="@drawable/ic_home_black_24dp"
            android:title="Home" />
        <item
            android:id="@+id/nav_search"
            android:icon="@drawable/ic_search_black"
            android:title="Search Location" />
        <item
            android:id="@+id/nav_fav"
            android:icon="@drawable/ic_favorite"
            android:title="Favorites" />
        <item
            android:id="@+id/nav_recent"
            android:icon="@drawable/ic_nav_route"
            android:title="Recent Location" />
        <item
            android:id="@+id/nav_route"
            android:icon="@drawable/ic_place"
            android:title="Route" />
    </group>

    <item android:title="Others">
        <menu>
            <item
                android:id="@+id/nav_settings"
                android:icon="@drawable/ic_settings"
                android:title="Settings" />
            <item
                android:id="@+id/nav_about"
                android:icon="@android:drawable/ic_menu_send"
                android:title="About" />
        </menu>
    </item>

</menu>

But when selecting the nav_settings, 但是,当选择nav_settings时,
the item is not check. 该项目不检查。
The item should be check just like the other items above. 该项目应像上面的其他项目一样进行检查。
This is my code on setting the item checked. 这是我设置检查项目的代码。
The fragment will just work fine. 该片段将正常工作。
but the selector on the nav_settings didn't work.. 但是nav_settings上的选择器不起作用。

 public void selectDrawerItem(MenuItem menuItem) {
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            drawer.closeDrawer(GravityCompat.START);
            Fragment fragment = null;

            Class fragmentClass;
            switch(menuItem.getItemId()) {
                case R.id.nav_home:
                    fragmentClass = FragmentMap.class;
                    setTitle("Map");
                    break;

                case R.id.nav_search:
                    fragmentClass = FragmentSearchLoc.class;
                    Global.setCurrentItem =2;
                    break;
                case R.id.nav_recent:
                    fragmentClass = FragmentSearchLoc.class;
                    Global.setCurrentItem =0;
                    break;
                case R.id.nav_fav:
                    fragmentClass = FragmentSearchLoc.class;
                    Global.setCurrentItem =1;
                    break;
                case R.id.nav_route:
                    fragmentClass = FragmentRoute.class;
                    setTitle("Routing");
                    break;
                case R.id.nav_settings:
                    fragmentClass = FragmentSettings.class;
                    setTitle("Settings");
                    break;
                default:
                    fragmentClass = FragmentMap.class;
            }

            try {
                fragment = (Fragment) fragmentClass.newInstance();
            } catch (Exception e) {
                e.printStackTrace();
            }


            FragmentManager fragmentManager = getSupportFragmentManager();
            fragmentManager.beginTransaction().replace(R.id.flContent, fragment).commit();

            drawer
            menuItem.setChecked(true);
            drawer.closeDrawers();
        }

I don't think nesting items like your code is allowed. 我认为不允许嵌套代码之类的项目。

If you do like below, it may work: 如果您喜欢以下操作,则可能会起作用:

<group android:checkableBehavior="single">
     <item
         android:id="@+id/nav_settings"
         android:icon="@drawable/ic_settings"
         android:title="Settings" />
     <item
         android:id="@+id/nav_about"
         android:icon="@android:drawable/ic_menu_send"
         android:title="About" />
</group>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM