Android IllegalArgumentException视图未附加到窗口
我有一个应用程序在重新启动时崩溃,因为它会立即显示一个对话框。这只有在我重新启动设备时才会发生(应用程序有一个启动接收器),否则,只要自己启动应用程序,就可以正常工作。该对话框由主活动调用。代码如下:Android IllegalArgumentException视图未附加到窗口,android,dialog,illegalargumentexception,Android,Dialog,Illegalargumentexception,我有一个应用程序在重新启动时崩溃,因为它会立即显示一个对话框。这只有在我重新启动设备时才会发生(应用程序有一个启动接收器),否则,只要自己启动应用程序,就可以正常工作。该对话框由主活动调用。代码如下: public class AssistekAlertDialog extends Dialog { @Override public void onAttachedToWindow() { getWindow().setType(WindowManager.LayoutParam
public class AssistekAlertDialog extends Dialog {
@Override
public void onAttachedToWindow() {
getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
///Exception^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
KeyguardManager manager = (KeyguardManager)con.getSystemService(Context.KEYGUARD_SERVICE);
KeyguardManager.KeyguardLock keylock = manager.newKeyguardLock(Context.KEYGUARD_SERVICE);
keylock.disableKeyguard();
super.onAttachedToWindow();
}
}
以下是日志:
03-05 15:38:08.292: E/AndroidRuntime(1505): FATAL EXCEPTION: main
03-05 15:38:08.292: E/AndroidRuntime(1505): java.lang.IllegalArgumentException: View not attached to window manager
03-05 15:38:08.292: E/AndroidRuntime(1505): at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:383)
03-05 15:38:08.292: E/AndroidRuntime(1505): at android.view.WindowManagerGlobal.updateViewLayout(WindowManagerGlobal.java:272)
03-05 15:38:08.292: E/AndroidRuntime(1505): at android.view.WindowManagerImpl.updateViewLayout(WindowManagerImpl.java:74)
03-05 15:38:08.292: E/AndroidRuntime(1505): at android.app.Dialog.onWindowAttributesChanged(Dialog.java:677)
03-05 15:38:08.292: E/AndroidRuntime(1505): at android.view.Window.setType(Window.java:637)
03-05 15:38:08.292: E/AndroidRuntime(1505): at com.assistek.ediary.AssistekAlertDialog.onAttachedToWindow(AssistekAlertDialog.java:298)
我可以通过使用try-catch块来消除异常,但这看起来很懒惰。是否有其他方法来处理此异常?仅当(yourDialog!=null)您使用的对话框…@Opiatefuchs似乎没有帮助时。如果您将代码从
onAttachedToWindow()
移动到onCreateView()
?后一种方法应该在windows附件进程完成后触发。@DerGolem-这不是一个片段,而是一个活动。因此,请改用onCreate()
?