Esperando que el Cajón de Navegación se cierre antes de inicializar Fragmentos con el lazo vacío while
De acuerdo con la documentación de DrawerLayout , "Evite realizar operaciones costosas como el diseño durante la animación ya que puede causar tartamudez".
Por lo tanto, he intentado esperar a que el cajón se cierre antes de proceder:
- Desplazamiento de izquierda a derecha con el visor y el cajón de navegación
- ¿Cómo crear un cajón de navegación personalizado que abre ListView junto al cajón onitemclick?
- Cómo agregar iconos adyacentes a los títulos de Android Navigation Drawer
- El botón de acción flotante aparece sobre el cajón de navegación
- Cómo abrir el cajón de navegación en el botón de clic en el fragmento principal?
@Override public void onItemClick(AdapterView parent , View view , int position , long id) { // Close the drawer mDrawerLayout.closeDrawer(mDrawerList); ExecutorService es = Executors.newSingleThreadExecutor(); final int mPosition = position; Thread navThread = new Thread(new Runnable() { @Override public void run() { // Wait for the drawer to close while (mDrawerLayout.isDrawerOpen(mDrawerList)); // Initialize the Fragments. runOnUiThread(new Runnable() { @Override public void run() { selectNavigationItem(mPosition); } }); } }); es.submit(navThread); es.shutdown(); }
A pesar de que funciona, Lint me advierte sobre el bucle vacío. ¿Cómo puedo lograr este efecto sin el lazo while vacío?
- Empuje la actividad a la derecha cuando el cajón abierto
- ¿Cómo evitar la recreación de fragmentos cuando se selecciona de NavigationDrawer?
- ¿Cuál es el propósito de las herramientas: openDrawer = "start" al crear un DrawerLayout (con NavigationView) desde el asistente?
- Desactivar oscurecimiento oscuro en el cajón de navegación
- Menú del cajón secundario
- Los datos del fragmento se van nulos cuando otro fragmento se carga
- Android NavigationView grupo de menús divider
- Cajón de navegación Cambia el fondo mientras se desplaza
En el ListView.OnItemClickListener
:
@Override public void onItemClick(AdapterView parent , View view , int position , long id) { mPosition = position; mNavigationItemClicked = true; mDrawerLayout.closeDrawer(mDrawerList); }
En el DrawerLayout
:
public void onDrawerClosed(View view) { getSupportActionBar().setTitle(mTitle); if (mNavigationItemClicked) selectNavigationItem(); mNavigationItemClicked = false; }
En selectNavigationItem()
:
switch (mPosition) { ... }
- Usando el paquete para pasar datos entre fragmento a otro fragmento ejemplo
- Animar el logotipo junto con la barra de herramientas de contracción dentro de CoordinatorLayout