Alternar el cajón de navegación 'abrir' en el botón / clic de imagen

He creado un fragmento que está conectado a un XML que contiene una vista de imagen. Un cajón de la navegación (usando el compat de la barra de acción) se fija dentro de activity_main.java y está trabajando muy bien. Lo que estoy queriendo hacer es, cuando toco la imagen dentro del fragmento, el cajón de navegación debe 'alternar abierto'.

El siguiente código dentro del método onCreateView devuelve un puntero nulo:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedinstanceState) { View view=inflater.inflate(R.layout.home, container, false); ImageView img=(ImageView)view.findViewById(R.id.imageView1); // Defined inside activity_main.xml final LinearLayout mDrawer = (LinearLayout) view.findViewById(R.id.drawer); // Defined inside activity_main.xml final DrawerLayout mDrawerLayout = (DrawerLayout)view.findViewById(R.id.drawer_layout); img.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mDrawerLayout.openDrawer(mDrawer); } }); return view; } 

Un puntero nulo se devuelve en la siguiente instrucción:

MDrawerLayout.openDrawer (mDrawer);

Estas líneas están haciendo referencia a la vista equivocada:

 final LinearLayout mDrawer = (LinearLayout) view.findViewById(R.id.drawer); final DrawerLayout mDrawerLayout = (DrawerLayout)view.findViewById(R.id.drawer_layout); 

Ellos están buscando el cajón en "R.layout.home" porque eso es lo que inflar y establecer en la variable de vista, findViewById () devolver null porque no está allí.

Si esta vista es un hijo de activity_main entonces debería ser capaz de cambiar esto a:

 final LinearLayout mDrawer = (LinearLayout) getActivity().findViewById(R.id.drawer); final DrawerLayout mDrawerLayout = (DrawerLayout) getActivity().findViewById(R.id.drawer_layout); 

Además, haría que estos miembros de la clase y no final.

Funciona en el botón de clic

 mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { drawer.openDrawer(GravityCompat.START); } }); 

Funciona con Image click

 mImageview.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { drawer.openDrawer(GravityCompat.START); } }); 

Siga estas guías.

– Creación de un cajón de navegación

– Android deslizante menú con el cajón de navegación

  • El artículo de DrawerLayout hace clic - ¿Cuándo es el momento adecuado para reemplazar el fragmento?
  • Navegación Cajón de contenedores múltiples y mejores prácticas
  • Android: Capaz de hacer clic a través del cajón de nav? AppCompat v7: r21
  • Android DrawerLayout.setDrawerLockMode () no funciona
  • Desactivación del cajón de navegación, cambio de botón de inicio / indicador ascendente en fragmentos
  • ¿Cómo crear un cajón de navegación personalizado que abre ListView junto al cajón onitemclick?
  • Icono del menú izquierdo en la barra de acciones de Android
  • Cambiar fragmento con el cajón de navegación de Android Studio predeterminado
  • El título de CollapsingToolbarLayout desaparece
  • Android: OnClick para el encabezado del cajón de navegación no funciona
  • ¿Ha cambiado el título en el cambio de orientación?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.