Cómo abrir el cajón de navegación sin barra de acción, abrir con sólo un botón

Tengo una barra de navegación sin ninguna barra de acción (no quiero una barra de acción). Estoy tratando de hacerlo para que tenga un botón que puede abrir el cajón de navegación.

Sé que hay un método llamado openDrawer para el DrawerLayout http://developer.android.com/reference/android/support/v4/widget/DrawerLayout.html#openDrawer(android.view.View)

No sabía cómo usarlo, pero he intentado hacer un botón cuando haga clic, ejecuta este método:

DrawerLayout mDrawerLayout = (DrawerLayout) getView().findViewById(R.id.drawer_layout); mDrawerLayout.openDrawer(mDrawerLayout); 

Cuando hago clic en él, me da una Java NullPointerException. Alguien tiene alguna idea?

EDIT: Este código está dentro de un fragmento, y estoy tratando de referir la disposición de cajón fuera del fragmento. He utilizado depurador, y está mostrando que mDrawlerLayout es NULL.

¿Algún consejo?

¡Gracias!

Es darle un puntero nulo porque está tratando de encontrar el diseño del cajón en la vista del fragmento, cuando está realmente en la vista de actividades.

Un hack rápido para hacer lo que quieres es encontrar la vista como:

 getActivity().findViewById(R.id.drawer_layout) 

Eso debería funcionar. Una mejor manera es tener un método sobre la actividad para abrir el cajón

 public void openDrawer(){ mDrawerLayout.openDrawer(mDrawerLayout); } 

En la actividad onCreate ejecuta tu findViewById:

 mDrawerLayout = (DrawerLayout) getView().findViewById(R.id.drawer_layout); 

MDrawerLayout debe ser una variable miembro de su actividad.

Entonces en su fragmento usted puede llamar:

 //cast activity to MyActivity so compiler doesn't complain ((MyActivity)getActivity()).openDrawer(); 

Una manera aún mejor de hacerlo es crear un oyente en el fragmento y establecer la actividad como un oyente para el fragmento. A continuación, puede llamar a un método sobre la actividad, similar a la anterior. Te dejaré hacer una investigación sobre cómo hacer eso.

drawerLayout.openDrawer(Gravity.START);

Gracias a @athor & @Ashish Tana.

Me tomó tanto tiempo para averiguar el error ( NullPointerException ) que estoy recibiendo.

El mío funciona de esta manera; En lugar de getView() , uso getActivity() y abrir el cajón por mDrawerLayout.openDrawer(Gravity.LEFT); .

 mDrawerLayout = (DrawerLayout) getActivity().findViewById(R.id.drawer_layout); final ImageButton btnOpenDrawer = (ImageButton) getView().findViewById(R.id.drawer_menu); btnOpenDrawer.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mDrawerLayout.openDrawer(Gravity.LEFT); } }); 

Escribí una respuesta sobre esto aquí: https://stackoverflow.com/a/18199771/880349

  //For me a better way in avoiding a `null pointer` in getting the DrawerLayout final DrawerLayout drawer = (DrawerLayout) getActivity().findViewById(R.id.drawer_layout); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //Opens the Drawer drawer.openDrawer(Your View, Usually a ListView); } return false; }); 

Obtiene directamente el cajón actual dentro de una vista / fragmento para que no obtenga una NullPointerException

Funciona en el botón de clic

 mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { drawer.openDrawer(GravityCompat.START); } }); 
  • ¿Por qué mi botón no funciona en el primer clic?
  • Obtener referencias a las vistas en mi actividad de Android
  • Cómo cambiar el icono de un botón mediante programación?
  • El botón se mueve al agregar texto de varias líneas
  • Uso del botón Atrás en una vista web en Android
  • Cómo obtener OnClick () de los botones agregados mediante programación?
  • ¿Cómo desactivar / activar los botones negativos positivos del diálogo?
  • ¿Cómo probar un AlertDialog en Android?
  • ¿Cómo puedo quitar el botón de ExpandableListView?
  • Habilitar la retroalimentación por toque para cada botón
  • Cómo crear un botón que contiene varias vistas?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.