我创建了两个带有唯一ID的组(我需要一个分隔符),它们都设置了checkableBehavior
为single。这允许从不同组中同时选中多个项目,而这正是我想避免的。我希望在所有组中最多只能选中一个项目。
由于我没有找到在XML中实现这一点的方法,因此我尝试在onNavigationItemSelected
中实施简单的逻辑来取消选中先前的菜单项:
if (previousItem != null)
previousItem.setChecked(false);
currentItem.setChecked(true);
但是setChecked(false)
方法从未对我起作用 - 项目仍然保持选中状态。
这是我的示例代码:
menu_navigation.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group
android:id="@+id/nav_group_1"
android:checkableBehavior="single">
<item
android:id="@+id/nav_feed"
android:title="@string/feed"/>
<item
android:id="@+id/nav_people"
android:title="@string/people"/>
</group>
<group
android:id="@+id/nav_group_2"
android:checkableBehavior="single">
<item
android:id="@+id/nav_settings"
android:title="@string/settings"/>
<item
android:id="@+id/nav_help_feedback"
android:title="@string/help_feedback"/>
<item
android:id="@+id/nav_logout"
android:title="@string/logout"/>
</group>
NavigationItemSelectedListener:
mUiNavigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
if (previousItem != null)
previousItem.setChecked(false);
currentItem.setChecked(true);
//...
changeCurrentFragment(...);
return true;
}
});
我需要提示!谢谢。
group
,并且使用android:checkableBehavior="single"
属性来包含所有的组怎么样?就像这个。 - AaA