Como definir o comportamento verificável compartilhado em todos os grupos no NavigationView?
Criei dois grupos com IDs únicos (preciso de um divisor) e ambos têmcheckableBehavior
definido comosolteiro. Isso permite que vários itens de diferentes grupos sejam verificados de uma só vez, e é exatamente isso que estou tentando evitar. Eu gostaria de ter um item marcado no máximo, em todos os grupos.
Como não encontrei nenhuma maneira de fazer isso em XML, tentei implementar uma lógica simples noonNavigationItemSelected
para desmarcar o item de menu anterior:
if (previousItem != null)
previousItem.setChecked(false);
currentItem.setChecked(true);
massetChecked(false)
O método nunca funcionou para mim - o item permanece marcado.
Aqui está o meu código de exemplo:
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;
}
});
Eu preciso de uma dica! Obrigado.