NavigationView OnNavigationItemSelectedListener no se llama

Estoy intentando utilizar NavigationView de la biblioteca del diseño de la ayuda de androide en mi app. Por alguna razón OnNavigationItemSelected oyente no se está llamando. Aquí está mi código

Disposición de la actividad

<android.support.design.widget.NavigationView android:id="@+id/navigation_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" app:headerLayout="@layout/drawer_header" app:menu="@menu/drawer_menu" /> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> 

Actividad onCreate ()

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getLayoutID()); toolbar = (Toolbar) findViewById(R.id.activity_toolbar); setSupportActionBar(toolbar); toolbar.inflateMenu(R.menu.common_menu); final ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setHomeAsUpIndicator(R.drawable.ic_menu_white_24dp); actionBar.setDisplayHomeAsUpEnabled(true); } drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); navigationView = (NavigationView) findViewById(R.id.navigation_view); navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(final MenuItem menuItem) { Snackbar.make(contentLayout, menuItem.getTitle() + " pressed", Snackbar.LENGTH_LONG).show(); menuItem.setChecked(true); // allow some time after closing the drawer before performing real navigation // so the user can see what is happening drawerLayout.closeDrawer(GravityCompat.START); mDrawerActionHandler.postDelayed(new Runnable() { @Override public void run() { navigate(menuItem.getItemId()); } }, DRAWER_CLOSE_DELAY_MS); drawerLayout.closeDrawers(); return true; } }); usernameTextView = (TextView) findViewById(R.id.drawer_header_username); usernameTextView.setText(getAppDContext().getAccount().getUsername()); } 

Cuando usted hace un xml, usted debe anotar NavigationView después de BaseLayout (FrameLayout, LinearLayout, etc.)

 <DrawerLayout> <FrameLayout /> <NavigationView /> </DrawerLayout> 

El diseño principal de su actividad debería tener el siguiente aspecto:

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/navigationDrawer" android:layout_width="match_parent" android:layout_height="match_parent"> <include layout="@layout/activity_main_content" /> <android.support.design.widget.NavigationView android:id="@+id/navigationView" style="@style/NavigationView" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="right" app:headerLayout="@layout/header" app:menu="@menu/menu_drawer"/> </android.support.v4.widget.DrawerLayout> 

En este NavigationView enlazé header.xml y menu_drawer.xml (desde la carpeta del menú) por ejemplo menu_drawer.xml:

 <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:checkableBehavior="single"> <item android:id="@+id/nav1" android:checked="true" android:icon="@drawable/logo" android:title="Navigation item 1"/> <item android:id="@+id/nav2" android:icon="@drawable/logo" android:title="Navigation item 2"/> </group> </menu> 

Que su código java:

 public class ActivityMain extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setUpToolbar(); setUpNavDrawer(); } private void setUpNavDrawer() { NavigationView view = (NavigationView) findViewById(R.id.navigationView); mDrawerLayout = (DrawerLayout) findViewById(R.id.navigationDrawer); view.setNavigationItemSelectedListener(this); mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.drawerOpen, R.string.drawerClose); mDrawerLayout.addDrawerListener(mDrawerToggle); mDrawerToggle.syncState(); } 

Compruebe si este trabajo para usted. En mi proyecto funciona como un encanto.

Para mí esto hizo el truco!

NavigationView = (NavigationView) findViewById (R.id.nav_view);

NavigationView.bringToFront ();

  • Cómo agregar secciones y subheader en el cajón de material android Recyclerview elementos?
  • Intermodule (proyectos de biblioteca) en la aplicación android
  • Cajón de navegación: crea una nueva instancia de fragmento cada vez o simplemente "actualiza" los datos.
  • Cómo configurar varias actividades de los padres para usar el botón de retroceso de Android
  • Cajón de navegación coexistente y diseño de panel deslizante
  • Intención de iniciar una actividad de navegación
  • Cómo agregar iconos a elementos en un cajón de navegación
  • En el gaviota de navegación, haga clic en, nueva vista de lista en el cajón de navegación
  • NavigationView: ¿cómo insertar divisor sin subgrupo?
  • Administrar correctamente la navegación Tabbar con ActivityGroup o Fragments etc en Android?
  • Barra de navegación translúcida (Android 4.4) - Mostrar contenido debajo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.