为什么这段代码无法在HTC上运行但在其他Android手机上运行?

时间:2012-04-19 18:52:17

标签: android layoutparams

我的意思是我写这段代码:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

它是在sony,samsung上运行的...但它在htc手机上是错误的(野火s)。为什么?

也许这是理由?

java.lang.IllegalArgumentException: View not attached to window manager
at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:381)
at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:226)
at android.view.Window$LocalWindowManager.removeView(Window.java:432)
at android.app.Dialog.dismissDialog(Dialog.java:278)
at android.app.Dialog.access$000(Dialog.java:71)
at android.app.Dialog$1.run(Dialog.java:111)
at android.app.Dialog.dismiss(Dialog.java:268)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:169)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3691)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
at dalvik.system.NativeStart.main(Native Method)

1 个答案:

答案 0 :(得分:2)

当您将此标志设置到其窗口时,似乎您的活动不可见。 相反,我建议您将以下属性添加到任何视图中。

android:keepScreenOn="true"

另一个原因可能是因为方向改变。如果您正在运行 AsyncTask ,同时方向发生变化,它实际上会破坏活动并重新创建它。现在,如果AsyncTask完成其工作,它将尝试更新不再可用的活动并崩溃。