Excepción de puntero nulo al finalizar la actividad en Android
Frecuentes
Visto 1,924 veces
1
Tengo una Actividad que tiene dos diseños diferentes basados en la vista de cuadrícula y la vista de galería de página completa, cuando el usuario hace clic en una imagen en la vista de cuadrícula, va a la galería de pantalla completa. Cuando el usuario está en la Galería de pantalla completa y cuando se hace clic en el botón Atrás, vuelve a la vista de cuadrícula. Finalmente, si el usuario vuelve a hacer clic en el botón Atrás, quiero que la Actividad finalice.
Así es como manejo el cambio de vistas al presionar el botón Atrás. Funciona bien, excepto que finaliza la actividad. Tengo una excepción de puntero nulo en la línea que llamo finish(). ¿Cómo puedo manejarlo?
@Override
public void onBackPressed() {
ViewPager mPager = (ViewPager) findViewById(R.id.gallery_view);
if(mPager.getVisibility() == View.VISIBLE){
setContentView(R.layout.thumbnail_gallery);
GridView g = (GridView) findViewById(R.id.myGrid);
g.setAdapter(new GridGallery(this));
return;
}else {
finish();
return;
}
}
1 Respuestas
0
He encontrado la razón de NullPointerException
En el final. El método findViewById
lo causa En lugar de verificar la visibilidad del diseño, he usado una variable booleana para verificarlo. Básicamente, cuando configuro la vista de contenido en un diseño, asigno esta variable a verdadero, y luego, cuando cambio la vista, también cambio la variable booleana a falso. Funciona bastante bien.
@Override
public void onBackPressed() {
if(isGalleryVisible) {
setContentView(R.layout.thumbnail_gallery);
GridView g = (GridView) findViewById(R.id.myGrid);
g.setAdapter(new GridGallery(this));
isGalleryVisible = false;
return;
} else {
finish();
return;
}
}
Y en el lugar donde cambio la vista, la asigno como verdadera. Echa un vistazo a continuación.
GridView g = (GridView) findViewById(R.id.myGrid);
g.setAdapter(new GridGallery(context));
isGalleryVisible = false;
g.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
myPagerAdapter = new MyPagerAdapter(context);
pager = (ViewPager) findViewById(R.id.gallery_view);
pager.setAdapter(myPagerAdapter);
pager.setCurrentItem(position);
isGalleryVisible = true;
}
});
Respondido el 02 de junio de 13 a las 11:06
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas android nullpointerexception android-activity or haz tu propia pregunta.
No obtuve las soluciones para aceptar las respuestas dadas para mis preguntas. Si simplemente acepto todas las respuestas o una de las respuestas, incluso si no es la solución exacta, puedo guiar a las personas por el camino equivocado y hacerles perder el tiempo. Si miras mi perfil, verás que la mayoría de las respuestas ni siquiera están relacionadas con la pregunta. Gracias por el comentario. - osayilgan
Creo que logcat puede ayudar a resolver un problema: Vladimir
intenta llamar
super.onBackPressed();
en lugar definish();
- VladimirGracias por el comentario encontré la respuesta. He visto este problema en otro lugar en stackoverflow. Si vota a favor de la pregunta, puede ayudar a los demás. - osayilgan
Si encontraste la solución, publícala como respuesta y acéptala =) - Vladimir