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()