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); } } } } 
  • Android Navigation Drawer implementado con Actividades
  • ¿Crear una transición Fragment como la aplicación Contactos?
  • Fragmentos, setRetainInstance (true) y bibliotecas enhebradas
  • ¿Los Fragmentos y las Actividades de Fragmentos son inherentemente más rápidos que las Actividades?
  • Fragmento Entrada recursiva a executePendingTransactions Error
  • Fragmento de mapa no se pudo modificar después de la recarga de fragmento
  • Fragmentos y onConfigurationChanged
  • TabHost con Actividades vs ActionBar con Fragmentos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.