-1

私はこのコードを書くことを意味します:

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

それはsony、samsungで実行されます...しかし、それはhtc電話(wildfire 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)
4

1 に答える 1

2

このフラグをウィンドウに設定しているときは、アクティビティが生きていないようです。代わりに、ビューのいずれかに次の属性を追加することをお勧めします。

android:keepScreenOn="true"

もう1つの理由は、向きの変更が原因である可能性があります。AsyncTaskを実行していて、その間に向きが変わると、実際にはアクティビティが破棄されて再作成されます。これで、AsyncTaskがそのジョブを完了すると、使用できなくなったアクティビティを更新しようとしてクラッシュします。

于 2012-04-19T19:02:57.497 に答える