El cajón de navegación no cierra

El cajón de navegación de mi aplicación no se cierra. Estoy usando actividades en lugar de fragmentos. Cuando hago clic en cualquier elemento en el listview , se abren otras actividades como debería, pero cuando vuelvo, el cajón sigue abierto. He intentado usar DrawerLayout.closeDrawers(); Pero no funcionó. ¿Cómo cierro el cajón de navegación?
Aquí está mi código:

Java

 public class MainActivity extends FragmentActivity { final String[] data ={"Aluminium","Gold","Zinc"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data); final DrawerLayout drawer = (DrawerLayout)findViewById(R.id.drawer_layout); final ListView navList = (ListView) findViewById(R.id.left_drawer); navList.setAdapter(adapter); navList.setOnItemClickListener(new AdapterView.OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> parent, View view, final int pos,long id){ switch (pos){ case 0: Intent i = new Intent(MainActivity.this,Aluminium.class); startActivity(i); break; case 1: Intent i2 = new Intent(MainActivity.this,Gold.class); startActivity(i2); break; case 2: Intent i3 = new Intent(MainActivity.this,Zinc.class); startActivity(i3); break; } } }); } } 

XML

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- The main content view --> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:background="#000000" android:layout_height="match_parent" > </FrameLayout> <ListView android:id="@+id/left_drawer" android:layout_width="220dp" android:layout_height="match_parent" android:layout_gravity="start" android:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="1dp" android:background="#000000"/> </android.support.v4.widget.DrawerLayout> 

has probado :

 mDrawerLayout.closeDrawer(drawerListView); 

Puede agregar esto antes de llamar a startActivity()

En la continuación de otras respuestas y @ Chinmay Dabke pregunta de 'pero el cajón se cierra la mitad y luego se detiene y luego se cierra completamente' en uno de los comentarios, aquí es lo que podría hacer:

Primero como otros sugirieron, esta línea falta. drawer.closeDrawer(navList);

Y en cuanto a la pausa del cajón se refiere al cierre, usted podría hacer algo como esto. Utilice un Runnable y un Handler como este:

 mRunnable = = new Runnable() { @Override public void run() { //say selectItem(pos); //Implement your switch case logic in this func } } 

Y luego en el método onDrawerClosed

 @Override public void onDrawerClosed(View view) { if (mRunnable != null) { mHandler.post(mRunnable); mRunnable = null; } } 

¡Espero que esto ayude!

Te sugiero que utilices fragmentos para el cajón de navegación y para resolver este problema de cajón no cerrar correctamente, encontré este artículo muy útil (utilizando fragmentos). http://www.michenux.net/android-asynctask-in-fragment-best-pratices-725.html

Llamada

 drawer.closeDrawer(navList); 

En el método onItemClick()

Tratar

drawer.closeDrawer(Gravity.START);

La gravedad de su drawer es start así que use eso para cerrar el drawer correspondiente

No vi ningún código en el que se está cerrando el ListView desde el cajón … cerrar el cajón de ListView en ListItem haga clic en …

  navList.setOnItemClickListener(new AdapterView.OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> parent, View view, final int pos,long id){ drawer.closeDrawer(navList); switch (pos){ case 0: Intent i = new Intent(MainActivity.this,Aluminium.class); startActivity(i); break; case 1: Intent i2 = new Intent(MainActivity.this,Gold.class); startActivity(i2); break; case 2: Intent i3 = new Intent(MainActivity.this,Zinc.class); startActivity(i3); break; } } }); 

Debe cerrar el cajón en el elemento de lista.

 drawer.closeDrawer(navList); 

También cuál es el uso de FrameLayout en su xml. No se utiliza como contenedor para agregar o reemplazar fragmentos

Llame al archivo drawer.closeDrawer (navList); Función antes del caso del interruptor

utilizar

 if(drawer.isDrawerOpen(navList)) { drawer.closeDrawer(navList); } 

En el método onResume () y el inicio del método onItemClick ().

O puede intentar otro enfoque .. ejecutar un hilo Ui cuando se selecciona elemento de cajón

 private void selectDrawerItemItem(final int position){ //Toast.makeText(getApplicationContext(), "ItemClicked", Toast.LENGTH_SHORT).show(); darwer.closeDrawer(navList); new Handler().postDelayed(new Runnable() { @Override public void run() { Fragment fragment = new Fragment(Activity.this); Bundle args = new Bundle(); args.putInt(Fragment.ARG_PLANET_NUMBER, position); fragment.setArguments(args); FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.beginTransaction().replace(R.id.content_frame,fragment).commit(); // update selected item and title, then close the drawer navList.setItemChecked(position, true); setTitle(" " + navListTitles[position]); } }, 200); // update the main content by replacing fragments } 

Estaba teniendo el mismo problema.

solía

 mDrawerLayout.closeDrawer(drawerListView); 

Antes de comenzar mi nueva actividad. Se desliza maravillosamente el cajón de nuevo en.

 private DrawerLayout mDrawerLayout; mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerLayout.closeDrawers(); 

funciona

Aquí está el código: Digamos que usted tiene la clase de cajón

En su actividad llame a la clase como y haga un vaiable y asigne (ponga la disposición del cajón dentro de un fragmento para una experiencia más suave del usuario)

 Drawer drawer; drawer = (Drawer)getActivity().getSupportFragmentManager().findFragmentById(R.id.theid); drawer.mDrawerLayout.closeDrawer(Gravity.END); //End for right and Start for left 

Espero eso ayude

  • Error: puedo hacer clic debajo del tablero de navegación
  • Cómo reanudar la actividad en lugar de reiniciar al ir "arriba" de la barra de acción
  • Vista de navegación de Android: Desplácese por los elementos del menú sólo para emitir
  • Android: Regresar al fragmento anterior en la parte posterior de la prensa
  • SingleTask launchMode en android no funciona
  • Submenú del menú del cajón de navegación
  • Integre tabhost y el cajón de navegación
  • Cambiar Icono Del Cajón De Navegación
  • ¿Debo especificar el nombre de la actividad principal en el manifiesto de Android?
  • Setting launchMode = "singleTask" contra la actividad de configuración launchMode = "singleTop"
  • Android - Navegación desde la actividad hasta el fragmento
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.