NavigationView具有选择的不稳定行为

时间:2015-07-26 11:30:21

标签: android selection android-support-library android-design-library navigationview

好的,行为或我的NavigationView有效。我点击设置,它就在那里。我点击我的第一个项目,它做了应有的事情。我点击第二个项目,它会做它应该做的事情。

但是,我的问题在于选择状态。我会点击一个项目,它不会选择它。唯一有效的选择是我的设置菜单。当我点击该项目时,设置菜单将被选中,以及我点击的所有先前项目。

方案

  1. On App Load

    • 转到NavigationView(A,B,设置)
    • 点击A Item
    • App导航到正确的位置(未选择任何内容)
    • 转到NavigationView
    • 点击“设置”
    • 应用导航到“设置活动”(“设置”菜单和“选择菜单”)
  2. On App Load

    • 转到NavigationView(A,B,设置)
    • 点击A Item
    • App导航到正确的位置(未选择任何内容)
    • 转到NavigationView
    • 点击B项
    • App导航到正确的位置(未选择任何内容)
    • 转到NavigationView
    • 点击“设置”
    • App导航到“设置活动”(“设置”菜单,并选择“A,B菜单”)
  3. On App Load

    • 转到NavigationView(A,B,设置)
    • 点击“设置”
    • 应用导航到“设置活动”(已选择“设置”菜单)
  4. On App Load

    • 转到NavigationView(A,B,设置)
    • 点击“设置”
    • 应用导航到“设置活动”(已选择“设置”菜单)
    • 转到NavigationView
    • 点击B项
    • App导航到正确的位置(选择了设置)
    • 转到NavigationView
    • 点击“设置”
    • 应用导航到设置活动(选择设置菜单和B菜单)
  5. On App Load

    • 转到NavigationView(A,B,设置)
    • 点击A Item
    • App导航到正确的位置(未选择任何内容)
    • 转到NavigationView
    • 点击A Item
    • App导航到正确的位置(选择A)
  6. 代码

    navigation.xml

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
    
    
        <item
            android:id="@+id/movie_heading"
            android:title="Movies"
            android:enabled="false">
    
            <menu
                android:id="@+id/navigationGroupMovies"
                android:checkableBehavior="single">
    
                <item
                    android:id="@+id/navigationOnline"
                    android:icon="@drawable/ic_movie_creation_white_24dp"
                    android:title="Find Online"
                    android:checkable="true"/>
    
                <item
                    android:id="@+id/navigationMyCollection"
                    android:icon="@drawable/abc_btn_rating_star_on_mtrl_alpha"
                    android:title="My Collections"
                    android:checkable="true"/>
    
            </menu>
    
        </item>
    
        <group
            android:id="@+id/navigationGroupSetting"
            android:checkableBehavior="single">
    
            <item
                android:id="@+id/navigationSetting"
                android:icon="@drawable/ic_settings_white_24dp"
                android:title="Settings" />
    
        </group>
    
    </menu>
    

    state_navigation_text.xml

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item android:state_checked="true"
              android:color="@color/accent"  />
    
        <item android:state_focused="true"
              android:color="@color/primary"/>
    
        <item android:color="@color/primary_dark" />
    
    </selector>
    

    点击导航项目时

    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
    
        item.setChecked(true);
    
        switch (item.getItemId()) {
    
            case R.id.navigationSetting:
    
                startActivity(new Intent(this, SettingsActivity.class));
                break;
    
            case R.id.navigationOnline:         setCurrentTabs(API.WEB_GROUP); break;
            case R.id.navigationMyCollection:   setCurrentTabs(API.OFFLINE_GROUP); break;
    
            default: // Do nothing
    
        }
    
        closeDrawer();
    
        return true;
    
    }
    

0 个答案:

没有答案