Actualmente estoy trabajando en una aplicación que tiene una barra de navegación inferior con tres elementos de menú. Había usado setOnNavigationItemSelectedListener() para hacer clic en los elementos. pero ahora me enfrento al problema de que el método se ha depreciado.
Java'setOnNavigationItemSelectedListener(com.google.android.material.bottomnavigation.BottomNavigationView.OnNavigationItemSelectedListener)' is deprecated ¿Hay alguna forma de resolverlo? ¿Hay alguna alternativa mejor que el método setOnNavigationItemSelectedListener() ?
puedes probar setonItemSelectedListener . Funciona igual que setOnNavigationItemSelectedListener() [probado en 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 }Está en desuso según las fuentes de github: BottomNavigationView.setOnNavigationItemSelectedListener
En su comentario se puede leer:
@deprecated Use {@link NavigationBarView#setOnItemSelectedListener(OnItemSelectedListener)} * instead.entonces use NavigationBarView.setOnItemSelectedListener de su clase base:
/** * 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; }También vea este compromiso
ya que explica la confusión sobre este cambio:
Los oyentes quedaron en desuso en favor de
NavigationBarView#OnItemSelectedListeneryNavigationBarView#OnItemReselectedListener, pero la documentación de desuso nunca se agregó, por lo que no está claro qué deben usar los desarrolladores en su lugar.
Podemos usar setOnItemSelectedListener en lugar de setOnNavigationItemSelectedListener y setOnItemReselectedListener en lugar de 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 } viewBindingMainActivity.navView.setOnItemSelectedListener { menuItem -> if (menuItem.itemId != R.id.navigation_home) { Add your code false } else { Add your code true } }