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:
- Cambiar elementos de NavigationView cuando el usuario está registrado
- El cajón de navegación es lento con vista compleja
- Androide. ¿Cómo puedo deslizar NavigationDrawer de la biblioteca de pruebas Espresso?
- Nuevo ActionBarDrawerToggle cuando se utiliza AppCompatActivity
- Adición de una imagen grande a un cajón de navegación (SlidingMenu libs) - ¿Cómo?
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);
- DrawerLayout con AdMob Ad
- Cajón de navegación - ¿qué hace syncState () y por qué debe llamarse dentro onPostCreate ()?
- Cómo agregar un elemento de menú plegable dentro del cajón de navegación en android?
- ¿Cómo crear un divisor simple en el nuevo NavigationView?
- Cajón de navegación cambio de color
- ¿Por qué DrawerLayout a veces falla al abrirse?
- Cómo crear un cajón de navegación personalizado en android
- Android, DrawerLayout + Fragmentos + CollapsingToolbarLayout
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
- Cómo utilizar un FirebaseRecyclerAdapter con una referencia dinámica en Android?
- Cómo especificar la carpeta lib para JARs cuando se utiliza un archivo de generación de hormigas generado por Android?