WindowManager$BadTokenException en Android
Frecuentes
Visto 1,582 veces
1
En primer lugar, soy muy consciente de que este error se produce porque estoy tratando de llamar a la ventana/diálogo a través de un Context
eso no es un Activity
.
Pero no hay ninguna solución a eso. Mis requisitos son; tengo un Dialog
con una hoja de estilo personalizada en un método de una clase JAVA normal. Quiero llamar a ese método desde cualquier Activity
clase cuando necesito cargar el Dialog
.
En mi clase de actividad, tengo el siguiente conjunto de códigos;
HomeClass homeClass = new HomeClass();
homeClass.showSplashScreen();
Luego, en mi HomeClass, tengo el siguiente conjunto de códigos;
public void showSplashScreen() {
splashDialog = new Dialog(HomeActivity.getAppContext(), R.style.SplashScreen);
splashDialog.setContentView(R.layout.splash_screen);
splashDialog.setCancelable(false);
splashDialog.show();
}
Al mantener este diseño, ¿hay alguna forma de deshacerse de la WindowManager $ BadTokenException
Gracias
2 Respuestas
1
Voy a modificar tu código, eso quizás te sea útil...
HomeClass homeClass = new HomeClass(this);
homeClass.showSplashScreen();
En la clase Your Home ... agregue un constructor paramétrico ...
public class Home {
private Context context;
public Home(Context context){
this.context = context;
}
public void showSplashScreen() {
splashDialog = new Dialog(context, R.style.SplashScreen);
splashDialog.setContentView(R.layout.splash_screen);
splashDialog.setCancelable(false);
splashDialog.show();
}
contestado el 03 de mayo de 12 a las 11:05
0
Pase su actividad al método showSplashScreen()...
Hazlo así..
HomeClass homeClass = new HomeClass();
homeClass.showSplashScreen(Your Actvity);
En tu clase de casa
public void showSplashScreen(Activity curActivity) {
splashDialog = new Dialog(curActivity, R.style.SplashScreen);
splashDialog.setContentView(R.layout.splash_screen);
splashDialog.setCancelable(false);
splashDialog.show();
}
contestado el 03 de mayo de 12 a las 11:05
Esto no está funcionando. Si está bastante seguro acerca de su código, ¿puede explicar el argumento "Su actividad"? - AnujAroshA
Amigo, necesitas escribir el nombre de tu actividad como argumento en lugar de "Tu actividad"... ejemplo: HomeActivity.this - Pradeep
Sí, puedo entender eso. Pero te dará una excepción. Por cierto, ya descubrí una manera. Gracias por la respuesta. - AnujAroshA
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas android android-alertdialog or haz tu propia pregunta.
Olvide mencionar
getAppContext()
es una referencia estática a la clase Activity. Significa que hay un segmento de código comoHomeActivity.homeActivityContext = getApplicationContext();
en mi clase de Actividad y de lagetAppContext
devuelve esa variable. - AnujAroshA