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.
/**
* 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;
}
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
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
}
}
es ist nicht veraltet developer.android.com/reference/com/google/android/material/…
– Dinkar Kumar
17. Juni 2021 um 15:04 Uhr