好的,行为或我的 NavigationView 有效。我点击设置,它把我带到那里。我点击我的第一个项目,它做了它应该做的。我点击第二个项目,它做了它应该做的事情。
但是,我的问题是选择状态。我将单击一个项目,它不会选择它。唯一有效的选择是我的设置菜单。当我单击该项目时,将选择设置菜单以及我之前单击的所有项目。
场景
应用加载时
- 转到 NavigationView(A、B、设置)
- 点击一个项目
- 应用导航到正确的位置(未选择任何内容)
- 转到导航视图
- 点击设置
- 应用导航到设置活动(设置菜单和 A 菜单被选中)
应用加载时
- 转到 NavigationView(A、B、设置)
- 点击一个项目
- 应用导航到正确的位置(未选择任何内容)
- 转到导航视图
- 点击B项目
- 应用导航到正确的位置(未选择任何内容)
- 转到导航视图
- 点击设置
- 应用导航到设置活动(设置菜单和 A、B 菜单被选中)
应用加载时
- 转到 NavigationView(A、B、设置)
- 点击设置
- 应用导航到设置活动(选择设置菜单)
应用加载时
- 转到 NavigationView(A、B、设置)
- 点击设置
- 应用导航到设置活动(选择设置菜单)
- 转到导航视图
- 点击B项目
- 应用导航到正确的位置(选择设置)
- 转到导航视图
- 点击设置
- 应用导航到设置活动(设置菜单和 B 菜单被选中)
应用加载时
- 转到 NavigationView(A、B、设置)
- 点击一个项目
- 应用导航到正确的位置(未选择任何内容)
- 转到导航视图
- 点击一个项目
- 应用导航到正确的位置(选择 A)
代码
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;
}