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

Antworten auf die Frage(12)

Ihre Antwort auf die Frage