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
- Cambiar la barra de herramientas con cambio de Fragmento como aplicación instagram
- Eliminar vínculo de transición entre las actividades de la herramienta Editor de navegación en Android Studio
- Obtener el icono de navegación de la barra de herramientas
- Android: inicia la navegación en modo de marcha
- Barra de herramientas - Cambio del botón del cajón al botón Atrás con una sola 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()); }
- Android: inicia la navegación de Google desde una aplicación
- Abra el segundo juego de cajones como un subconjunto de cajones durante el primer
- Fragmento de carga antes de la navegación Cierre del cajón
- Ocultar el cajón de navegación cuando el usuario presiona el botón de retroceso
- ¿Cuál es la diferencia entre la biblioteca de SlidingMenu y el Cajón de navegación de Android?
- Desactivar el golpe para el cajón abierto pero NO para cerrar
- Cómo obtener direcciones flecha sin utilizar google maps api
- Cómo agregar botones de pie de página en NavigationView
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 ();
- Indicador de actividad de cliente de webview android
- Compatibilidad con FFmpeg para descodificación de hardware libstagefright