Wie kann ein gemeinsames überprüfbares Verhalten für alle Gruppen in NavigationView festgelegt werden?
Ich habe zwei Gruppen mit eindeutigen IDs erstellt (ich benötige einen Teiler) und beide habencheckableBehavior
einstellenSingl. Auf diese Weise können mehrere Elemente aus verschiedenen Gruppen gleichzeitig überprüft werden, und genau das möchte ich vermeiden. Ich möchte maximal einen Artikel in allen Gruppen prüfen lassen.
Da ich in XML keine Möglichkeit gefunden habe, dies zu tun, habe ich versucht, eine einfache Logik in @ zu implementiereonNavigationItemSelected
, um den vorherigen Menüpunkt zu deaktivieren:
if (previousItem != null)
previousItem.setChecked(false);
currentItem.setChecked(true);
abersetChecked(false)
-Methode hat bei mir nie funktioniert - der Artikel bleibt aktiviert.
Hier ist mein Beispielcode:
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;
}
});
Ich brauche einen Tipp! Vielen Dank