相关疑难解决方法(0)

IllegalArgumentException:添加窗口后无法更改窗口类型

我试过的建议在这里,建议在此情况下,建议在这里,我已经在我的基本活动注释掉onAttachedToWindow().我有两个活动继承自这个类BaseActivity.一个运行,一个不运行.有什么区别?我的目标SDK是19; 将它改为12没有区别.这是我的onCreate for 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);

    ....
    }
Run Code Online (Sandbox Code Playgroud)

当导航到第二个活动时,单步执行代码,它会通过onCreate(),onResume(),然后崩溃.

可能是什么问题呢?

堆栈跟踪:

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) …
Run Code Online (Sandbox Code Playgroud)

android android-windowmanager android-activity

21
推荐指数
1
解决办法
1万
查看次数

使用WindowManager.LayoutParams.TYPE_KEYGUARD时,最小目标必须小于14

我试图阻止状态栏扩展,我已经使用了一些人们试图覆盖主页按钮的例子.所有解决方案都指向使用WindowManager.LayoutParams.TYPE_KEYGUARD,我在这里读到,如果使用TYPE_KEYGUARD,最小目标必须小于14.不推荐使用TYPE_KEYGUARD,所以我还需要解决这个问题.它已完全从SDK 21中删除.

问题:什么是变通方法所以我可以覆盖状态栏并将目标构建保持为19?

我有一个像这样的构建项目:

android {
   compileSdkVersion 17
   buildToolsVersion "21.1.2"

   defaultConfig {
      applicationId "com.mycompany.ediary"
      minSdkVersion 12
      targetSdkVersion 12
   }

   buildTypes {
      release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

我试过这里的建议无济于事.我希望targetSdkVersion为19,但如果我将其更改为19,我会得到IllegalArgumentException.堆栈跟踪:

11-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) …
Run Code Online (Sandbox Code Playgroud)

android statusbar illegalargumentexception

8
推荐指数
1
解决办法
1762
查看次数