vista - ver preview en android studio
Android ''No se puede agregar la ventana: nulo de la ficha no es para una aplicación'' excepción (8)
Obtengo la siguiente excepción de Android cuando intento abrir un diálogo. ¿Puede alguien ayudarme a entender qué está pasando 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)
En mi caso, estaba intentando crear mi diálogo de esta manera:
new Dialog(getApplicationContext());
Entonces tuve que cambiar por:
new Dialog(this);
Y funciona bien para mí;)
Intenté con esto en el campo de contexto:
this.getActivity().getParent()
y funciona bien para mi Esto era de una clase que se extiende desde "Fragmento":
public class filtro extends Fragment{...
Obtuve esta excepción cuando intenté abrir el cuadro de diálogo Progreso en el complemento Cordova usando dos casos a continuación,
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.
Pruebe getParent()
en el argumento lugar de context
como new AlertDialog.Builder(getParent());
Espero que funcione, funcionó para mí.
Puede continuar utilizando getApplicationContext()
, pero antes de usarlo, debe agregar este dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT)
: dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT)
, y no se mostrará el error.
Y no olvides agregar un permiso:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
Supongo que, ¿estás tratando de crear un diálogo con un contexto de aplicación? Algo como esto:
new Dialog(getApplicationContext());
Esto está mal. Necesita usar un contexto de Actividad.
Tienes que probar como:
new Dialog(YourActivity.this);
Use esto y el contexto no funcionó para mí ... pero MyActivityName.this funcionó. Espero que esto ayude a cualquiera que lo necesite.
Supongo que, ¿estás tratando de crear un diálogo utilizando?
getApplicationContext()
mContext which is passed by activity.
si muestra una clase de diálogo no actividad, debe pasar la actividad como parámetro.
Activity activity=YourActivity.this;
Ahora será un gran trabajo.
Si encuentra algún problema, hágamelo saber.