Te sugerimos que pruebes esta respuesta en un ambiente controlado antes de enviarlo a producción, saludos.
Solución:
Utilice este código:
navigationView = (NavigationView) findViewById(R.id.navigationView);
navigationView.bringToFront();
Echa un vistazo a tu MainActivity.java
.
Ha implementado las devoluciones de llamada para NavigationView.OnNavigationItemSelectedListener
en MainActivity
como a continuación,
@Override
public boolean onNavigationItemSelected(MenuItem menuItem)
// blah blah
También revisa el setupDrawerContent
método.
private void setupDrawerContent(NavigationView navigationView)
navigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener()
@Override
public boolean onNavigationItemSelected(MenuItem menuItem)
menuItem.setChecked(true);
drawerLayout.closeDrawers();
return true;
);
En este método está creando un local OnNavigationItemSelectedListener
.
Entonces no estás usando el OnNavigationItemSelectedListener
que has anulado en MainActivity
.
La solución es usar this
como argumento para setNavigationItemSelectedListener
. Al hacer esto, todos sus clics se convertirán en onNavigationItemSelected
de MainActivity
en lugar de ir al local onNavigationItemSelected
.
private void setupDrawerContent(NavigationView navigationView)
navigationView.setNavigationItemSelectedListener(this);
También mueva el código en el local onNavigationItemSelected
al onNavigationItemSelected
de MainActivity
.
Entonces tus onNavigationItemSelected
será algo como esto,
@Override
public boolean onNavigationItemSelected(MenuItem menuItem)
// Handle navigation view item clicks here.
int id = menuItem.getItemId();
menuItem.setChecked(true);
drawerLayout.closeDrawers();
if (id == R.id.nav_home)
// Handle the home action
Toast.makeText(this, "Home", Toast.LENGTH_SHORT).show();
else if (id == R.id.nav_the_wetlands)
Toast.makeText(this, "The Wetlands", Toast.LENGTH_SHORT).show();
TheWetlandsFragment theWetlandsFragment = new TheWetlandsFragment();
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.relativelayout_for_fragment, theWetlandsFragment, theWetlandsFragment.getTag()).commit();
else if (id == R.id.nav_the_mistbelt_forests)
Toast.makeText(this, "The Mistbelt Forests", Toast.LENGTH_SHORT).show();
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
También cambia tu activity_main_drawer_view.xml
de la siguiente manera para resolver el problema de selección múltiple que tiene en el panel de navegación,
Buena suerte.
También me enfrenté al mismo problema hace algún tiempo, y al final me di cuenta de que no había escrito la segunda línea del siguiente código
navigationView = (NavigationView) findViewById(R.id.navigation_view);
navigationView.setNavigationItemSelectedListener(this);
asegúrese de haber escrito lo mismo, de lo contrario su oyente no funcionará
Te mostramos las reseñas y valoraciones de los usuarios
Agradecemos que desees añadir valor a nuestra información dando tu veteranía en las referencias.