setOnNavigationItemSelectedListener veraltet

Lesezeit: 2 Minuten

Benutzeravatar von Jeyasurya
Jeyasurya

Derzeit arbeite ich an einer App, die eine untere Navigationsleiste mit drei Menüpunkten hat. Ich hatte verwendet setOnNavigationItemSelectedListener() für angeklickte Elemente. Aber jetzt stehe ich vor dem Problem, dass die Methode abgeschrieben wurde.

  • App-Sprache: Java
  • Ausgabe: 'setOnNavigationItemSelectedListener(com.google.android.material.bottomnavigation.BottomNavigationView.OnNavigationItemSelectedListener)' is deprecated

Gibt es eine Möglichkeit, es zu lösen? Gibt es eine bessere Alternative als setOnNavigationItemSelectedListener() Methode.

Benutzeravatar von marcinj
marcinj

Es ist laut Github-Quellen veraltet: BottomNavigationView.setOnNavigationItemSelectedListener

In seinem Kommentar ist zu lesen:

@deprecated Use {@link NavigationBarView#setOnItemSelectedListener(OnItemSelectedListener)}
   *     instead.

also verwenden NavigationBarView.setOnItemSelectedListener von seiner Basisklasse:

  /**
   * Set a listener that will be notified when a navigation item is selected. This listener will
   * also be notified when the currently selected item is reselected, unless an {@link
   * OnItemReselectedListener} has also been set.
   *
   * @param listener The listener to notify
   * @see #setOnItemReselectedListener(OnItemReselectedListener)
   */
  public void setOnItemSelectedListener(@Nullable OnItemSelectedListener listener) {
    selectedListener = listener;
  }

Siehe auch dies verpflichten

wie es die Verwirrung über diese Änderung erklärt:

Die Zuhörer wurden zugunsten von abgelehnt
NavigationBarView#OnItemSelectedListener und
NavigationBarView#OnItemReselectedListeneraber eine Verfallsdokumentation wurde nie hinzugefügt, daher ist unklar, was Entwickler stattdessen verwenden sollten.

  • Ich versuchte es. es funktioniert gut, danke. aber die Geschwindigkeit des Umschaltens zwischen Navigationselementen wird etwas langsamer als OnNavigationItemSelectedListener. Irgendwelche Verbesserungsvorschläge? Trotzdem danke für die Hilfe

    – Jeyasurya

    18. Juni 2021 um 3:43 Uhr

  • Fügen Sie möglicherweise einen leeren Listener zu setOnItemRes selectedListener hinzu. Auf diese Weise wird Ihr Listener in setOnItemSelectedListener nicht aufgerufen, wenn das Element erneut ausgewählt wird

    – Marcinj

    18. Juni 2021 um 8:13 Uhr

Benutzeravatar von Abu Saeed
Abu Said

Du kannst es versuchen setonItemSelectedListener. Es funktioniert genauso wie setOnNavigationItemSelectedListener()[tested in android 11]

bnv.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            int id = item.getItemId();
            switch(id){
              //check id
            }
            return true;
        }
    });

Kotlin:

bnv.setOnItemSelectedListener { item ->
            when (item.itemId) {
            }
            true
        }

Wir können benutzen setOnItemSelectedListener Anstatt von setOnNavigationItemSelectedListener und
setOnItemReselectedListener Anstatt von setOnNavigationItemReselectedListener

navView.setOnItemSelectedListener {
    // do something
    true
}

// In case the default menu can be the first menu 
// Should set the default selected menu BETWEEN setOnItemSelectedListener and setOnItemReselectedListener. 
// It will make setOnItemSelectedListener fired when you launch app. 

// If you set default menu AFTER setOnItemReselectedListener. 
// Then setOnItemReselectedListener will fired when you launch app
navView.selectedItemId = R.id.navigation_home


navView.setOnItemReselectedListener {
    // do something
}

Sie können in Kotlin verwenden

buttmNav.setOnItemSelectedListener { item ->
        when (item.itemId) {
        }
        true
    }

 viewBindingMainActivity.navView.setOnItemSelectedListener { menuItem ->
            if (menuItem.itemId != R.id.navigation_home) {
                Add your code
                false
            } else {
                Add your code
                true
            }
        }

kotlin: setOnItemSelectedListener verwenden

    bottomNavigationView.setOnItemSelectedListener { item: MenuItem ->
            when (item.itemId) {
                 R.id. ... -> {
                    Add your code
                 true
            }
            
            else ->
                true
        }

1394660cookie-checksetOnNavigationItemSelectedListener veraltet

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy