在我的应用程序中,导航抽屉中有两个项目代表两种模式:
1)所有国家的测验 2)最喜欢的测验
当用户选择Favorite Quiz
模式时,应用程序将检查特定条件。我想要的是如果条件失败,那么我想以编程方式设置All Countries Quiz
列表项的selected属性进行检查。基本上,如果第二种模式的条件失败,它应该恢复到第一种模式。
这样的事情:
1)用户当前正在开启 - 所有国家/地区测验模式
2)现在用户点击 - 收藏测验模式。如果条件为真,则一切正常,选择器切换到第二模式:
3)但如果条件失败,则选择不应移至第二模式并应保持在第一模式:
以下是导航抽屉上项目的菜单列表代码:
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_quiz_all"
android:icon="@drawable/ic_public_black_24dp"
android:checked="true"
android:title="All Countries Quiz"/>
<item
android:id="@+id/nav_quiz_bookmarked"
android:icon="@drawable/ic_favorite_black_24dp"
android:title="Favorite Quiz"/>
</group>
<item android:title="Communicate">
<menu>
<item
android:id="@+id/nav_rate"
android:icon="@drawable/ic_star_black_24dp"
android:title="Rate this app"/>
<item
android:id="@+id/nav_share"
android:icon="@drawable/ic_share_black_24dp"
android:title="Share"/>
<item
android:id="@+id/nav_feedback"
android:icon="@drawable/ic_feedback_black_24dp"
android:title="Feedback"/>
<item
android:id="@+id/nav_about"
android:icon="@drawable/ic_info_black_24dp"
android:title="About"/>
</menu>
</item>
<item
android:id="@+id/nav_settings"
android:icon="@drawable/ic_settings_black_24dp"
android:title="Settings"/>
答案 0 :(得分:1)
您可以使用setCheckedItem()
NavigationView
方法
代码片段:
@Override
public boolean onNavigationItemSelected(MenuItem item) {
if(condition){
mNavigationView.setCheckedItem(R.id.nav_item); //yOur Item
}
mNavigationView.setCheckedItem(item.getItemId());
}
修改强>
您可以使用以下代码段:在条件适用时在您的活动中调用它。
mNavigationView.post(new Runnable() {
@Override
public void run() {
navigationView.setCheckedItem(R.id.nav_item);
}
});