Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Volver a seleccionar el elemento de menú NavigationView correcto después de pulsar el botón Atrás

Tengo una aplicación de Android que tiene un NavigationView con 4 fragmentos. Puedo navegar entre fragmentos vía el menú de la navegación y cuando selecciono otro fragmento, agregué el fragmento anterior en la pila trasera para proporcionar la funcionalidad posterior del botón.

Mi problema es que cuando presiono el botón de la parte posterior para ir al fragmento anterior, el NavigationView todavía muestra el fragmento viejo como el fragmento seleccionado. Si es posible, quiero actualizar la opción seleccionada como el fragmento en la pantalla.

Ejemplo:
Comienzo desde A y selecciono B desde NavigationView. La pantalla actual es B y NavigationView muestra el elemento seleccionado como B. Si presiono el botón Atrás, mi pantalla actual se convierte en A de nuevo, pero NavigationView muestra B como elemento seleccionado.

Aquí está mi método onNavigationItemSelected:

public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId(); HomeFragment fragment = null; Class type = null; switch (id) { case R.id.nav_home: type = HomeNavigationFragment.class; break; case R.id.nav_groups: type = GroupsNavigationFragment.class; break; case R.id.nav_profile: type = ProfileNavigationFragment.class; break; case R.id.nav_messages: type = MessageNavigationFragment.class; break; } fragment = HomeFragment.newInstance(mUser, type); FragmentManager manager = getSupportFragmentManager(); manager.beginTransaction().replace(R.id.fragment_container, fragment).addToBackStack("fragment" + code++).commit(); DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); return true; } 

Gracias.

One Solution collect form web for “Volver a seleccionar el elemento de menú NavigationView correcto después de pulsar el botón Atrás”

He arreglado mi problema con la sobrecarga onBackPressed de esta manera:

 @Override public void onBackPressed() { DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { FragmentManager manager = getSupportFragmentManager(); if(manager.getBackStackEntryCount() > 0) { super.onBackPressed(); HomeFragment currentFragment = (HomeFragment) manager.findFragmentById(R.id.fragment_container); if(currentFragment instanceof HomeNavigationFragment){ mNavigationView.getMenu().getItem(0).setChecked(true); } else if(currentFragment instanceof GroupsNavigationFragment){ mNavigationView.getMenu().getItem(2).setChecked(true); } else if(currentFragment instanceof ProfileNavigationFragment){ mNavigationView.getMenu().getItem(1).setChecked(true); } else if(currentFragment instanceof MessageNavigationFragment){ mNavigationView.getMenu().getItem(3).setChecked(true); } } } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.