Recibo la siguiente excepción de Android cuando intento abrir un cuadro de diálogo. ¿Alguien puede ayudarme a comprender lo que está sucediendo y cómo puedo solucionar este problema?
android.view.WindowManager$BadTokenException:
Unable to add window -- token null is not for an application
at android.view.ViewRoot.setView(ViewRoot.java:509)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
at android.app.Dialog.show(Dialog.java:241)
Respuestas:
Supongo que ¿estás intentando crear un diálogo con un contexto de aplicación? Algo como esto:
Esto está mal. Debe usar un contexto de actividad.
Tienes que probar como:
fuente
getActivity()
@SagarDevangaPuede continuar usándolo
getApplicationContext()
, pero antes de usarlo, debe agregar este indicador:dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT)
y el error no aparecerá.Y no olvides agregar permiso:
fuente
En mi caso, estaba tratando de crear mi diálogo así:
Entonces tuve que cambiar por:
Y funciona bien para mí;)
fuente
MyActivity.class
lugar dethis
porque sethis
refiere a un objeto diferente.this
se asegurará de que tuDialog
herede tu tema.Tratar
getParent()
en el lugar del argumentocontext
comonew AlertDialog.Builder(getParent());
la esperanza de que funcione, que trabajó para mí.fuente
this.parent.getActivity().getApplicationContext()
perothis.parent.getActivity()
hice el truco.Supongo que estás intentando crear un diálogo usando.
si muestra una clase de diálogo sin actividad, debe pasar la actividad como parámetro.
Ahora será un gran trabajo.
Si encuentra algún problema, hágamelo saber.
fuente
Intenté con esto en el campo de contexto:
y funciona bien para mi Esto era de una clase que se extiende desde "Fragmento":
fuente
Hola, si está utilizando un adaptador, puede haber una posibilidad.
Todo lo que necesita saber cuando utilizó un cuadro de diálogo en el adaptador, getContext (), contexto o actividad no funcionará alguna vez.
Aquí está el truco que utilicé
v.getRootView().getContext()
donde v es el objeto de vista al que hace referencia.P.ej.
fuente
Tengo la misma excepción. lo que hago para solucionar esto es pasar la instancia del diálogo como parámetro a la función y usarla en lugar de pasar solo el contexto y luego usar getContext (). Esta solución resuelve mi problema, espero que pueda ayudar
fuente
Obtuve esta excepción, cuando intenté abrir el Diálogo de progreso en Cordova Plugin usando los siguientes dos casos,
nuevo ProgressDialog (this.cordova.getActivity (). getParent ());
nuevo ProgressDialog (this.cordova.getActivity (). getApplicationContext ());
Más tarde cambió así,
nuevo ProgressDialog (this.cordova.getActivity ());
esta trabajando bien para mi.
fuente
Use esto y el contexto no funcionó para mí ... pero MyActivityName.Eso funcionó. Espero que esto ayude a cualquiera que lo necesite.
fuente
Resolví este error agregando a continuación el permiso de usuario en AndroidManifest.xml
Además, inicie el cuadro de diálogo Alerta con el nombre de la actividad:
Para obtener más detalles, visite ==> Cómo crear un cuadro de diálogo de alerta en Android
fuente