IllegalArgumentException: No se puede cambiar el tipo de ventana después de agregar la ventana
He intentado el consejo aquí , el consejo aquí , el consejo aquí , he comentado el onAttachedToWindow () en mi actividad base. Tengo dos Actividades que heredan de esta clase, BaseActivity. Uno corre, y uno no. ¿Cuál podría ser la diferencia? Mi SDK objetivo es 19; cambiarlo a 12 no hace ninguna diferencia. Aquí está mi onCreate para BaseActivity:
@Override protected void onCreate(Bundle savedInstanceState) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); requestWindowFeature(Window.FEATURE_NO_TITLE); super.onAttachedToWindow(); super.onCreate(savedInstanceState); .... }
Al navegar a la segunda actividad, pasando por el código, lo hace a través de onCreate (), onResume (), luego se bloquea.
- No se puede eliminar la vista de superposición
- ¿Cómo evitar la pantalla en negro en Android mientras mi aplicación se está cargando?
- La exención 'No se puede agregar ventana - token de Android' no es para una aplicación '
- Ventana de superposición del sistema causa problemas de tacto para el teclado y el botón Atrás
- Iniciar actividad externa mientras el teléfono está bloqueado
¿Cual podría ser el problema?
Stacktrace:
06-26 13:41:57.963 28667-28667/com.assistek.ediary E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.assistek.ediary, PID: 28667 java.lang.IllegalArgumentException: Window type can not be changed after the window is added. at android.os.Parcel.readException(Parcel.java:1550) at android.os.Parcel.readException(Parcel.java:1499) at android.view.IWindowSession$Stub$Proxy.relayout(IWindowSession.java:903) at android.view.ViewRootImpl.relayoutWindow(ViewRootImpl.java:5301) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1507) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5885) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) at android.view.Choreographer.doCallbacks(Choreographer.java:580) at android.view.Choreographer.doFrame(Choreographer.java:550) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
EDIT : si cambio a la API de destino 12 y poner todos los cambios de onCreate
en onAttachedToWindow
, puedo conseguir esta excepción para irse, pero me gustaría que el SDK objetivo de 19.
Mi nueva onCreate ():
@Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); ... }
Mi nuevo onAttachedToWindow ():
@Override public void onAttachedToWindow() { getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); }
Esto sólo funciona con la API de destino 12.
Respuesta El destino mínimo debe ser inferior a 14 cuando se utiliza WindowManager.LayoutParams.TYPE_KEYGUARD
- Android Crash, java.lang.IllegalArgumentException: El tipo de ventana no se puede cambiar después de agregar la ventana
- FLAG_TURN_SCREEN_ON no funciona
- Cómo obtener la ventana de un InputMethodService?
- Actividad de Android que no se muestra cuando se desactiva la pantalla y se bloquea la pantalla
- Orden de PopupWindow z
- ¿Por qué mi menú de edición / copia de EditText se encuentra debajo de EditText? ¿Cómo cambiar el orden z de la ventana emergente?
- "Window Manager Crash" al enviar la tecla 'Abajo' en el Samsung Galaxy S
- Mantener un seguimiento de la vista agregada a WindowManager (no función findViewById ()?)
Trate de usar esto para la ventana:
requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_adjectives);
Me encuentro con la misma pregunta. Pero después de detener la adición
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); requestWindowFeature(Window.FEATURE_NO_TITLE);
antes de super.onCreate(savedInstanceState);
de BaseActivity
, funciona bien. super.onCreate(savedInstanceState);
códigos anteriores antes de super.onCreate(savedInstanceState);
de BaseActivity
de BaseActivity
.
Por cierto, no creo que usted tiene que llamar a super.onAttachedToWindow();
dentro de los métodos del círculo de la vida de la Activity
. Porque onAttachedToWindow();
se llama cuando la vista se adjunta a una ventana cuando se sobreescribe una View
.
También tuve este problema, pero lo resolví quitando la ventana, cambiando los parámetros y agregando la ventana otra vez. Esto fue lo suficientemente bueno para mí.
WindowManager.removeView(View); params = params2; //changed the params to something else WindowManager.updateViewLayout(View, params); WindowManager.addView(View, params);
Lo siento por la respuesta tardía. Usted debe agregar:
requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
en el método onCreate si está utilizando api nivel 15 o superior. Esto funciona para mi.
- Android: ¿Cómo puedo establecer un listener para el MenuButton?
- Android Studio 1.0.2 "minifyEnabled true" bloquea la versión firmada apk