3

我正在开发 android 2.2 froyo 应用程序。当我运行我的应用程序 android 2.2,3.0 时完美运行。但是当我在 android 4.0 及更高版本上运行时,我给出了一个错误。不幸的是,应用程序已停止。请帮助我如何解决错误。

08-03 16:19:36.602: E/AndroidRuntime(581): FATAL EXCEPTION: main
08-03 16:19:36.602: E/AndroidRuntime(581): java.lang.IllegalArgumentException: Window type can not be changed after the window is added.
08-03 16:19:36.602: E/AndroidRuntime(581):  at android.os.Parcel.readException(Parcel.java:1331)
08-03 16:19:36.602: E/AndroidRuntime(581):  at android.os.Parcel.readException(Parcel.java:1281)
08-03 16:19:36.602: E/AndroidRuntime(581):  at android.view.IWindowSession$Stub$Proxy.relayout(IWindowSession.java:634)
08-03 16:19:36.602: E/AndroidRuntime(581):  at android.view.ViewRootImpl.relayoutWindow(ViewRootImpl.java:3586)
08-03 16:19:36.602: E/AndroidRuntime(581):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1185)
08-03 16:19:36.602: E/AndroidRuntime(581):  at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
08-03 16:19:36.602: E/AndroidRuntime(581):  at android.os.Handler.dispatchMessage(Handler.java:99)
08-03 16:19:36.602: E/AndroidRuntime(581):  at android.os.Looper.loop(Looper.java:137)
08-03 16:19:36.602: E/AndroidRuntime(581):  at android.app.ActivityThread.main(ActivityThread.java:4424)
08-03 16:19:36.602: E/AndroidRuntime(581):  at java.lang.reflect.Method.invokeNative(Native Method)
08-03 16:19:36.602: E/AndroidRuntime(581):  at java.lang.reflect.Method.invoke(Method.java:511)
08-03 16:19:36.602: E/AndroidRuntime(581):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
08-03 16:19:36.602: E/AndroidRuntime(581):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-03 16:19:36.602: E/AndroidRuntime(581):  at dalvik.system.NativeStart.main(Native Method)

Logcat
错误就像:不幸的是应用程序已停止

4

3 回答 3

6

检查您的活动/活动中是否有此代码

  @Override
    public void onAttachedToWindow()
    {  
        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
        super.onAttachedToWindow();  
    }

这是早期 Android 版本中的一个安全漏洞,可用于将用户锁定在应用程序中并阻止他使用主页按钮。这在 Android 4 及更高版本上已修复,使用它会给您看到您看到的错误。

于 2012-10-30T10:05:03.900 回答
1

如果没有任何示例代码,我们将很难判断问题出在哪里。但是,既然您提到了版本控制...

1:在您的 AndroidManifest.xml 文件中,确保您的最低 SDK 设置为级别 8 (Froyo),目标设置为 15 (ICS),或者更好的是 16 (Jelly Bean)。像这样的东西:

<manifest ...>
...
<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="15" />

<application>
...
</application>
</manifest>

2:如果您使用的是Eclipse,请右键单击您的项目--> Properties --> Android --> Project Build Target。检查什么 API 级别?理想情况下,这应该是最新版本的 Android,即 Jelly Bean,但对于您的情况,Android 4.0.3 可以。如果您的系统中没有安装该 API 级别的 SDK,我不确定您是否可以针对它进行编译。确保您已安装目标 API 级别。

于 2012-08-03T12:56:18.983 回答
0

我本可以在上面发表评论,但我没有足够的声誉。

也许您的应用程序与 15 的 API 级别不兼容。前段时间我做了类似的事情,但是当我尝试自定义标题栏时。随着 Google 在新框架中不断改进和增强,打破 API 级别很容易。您的问题的解决方案是添加一个兼容包,该包可在 Android 开发人员的网站上找到。但我们还需要知道您的真正问题是什么,以表明您的问题是否有兼容包。发布您的代码,也许我们可以有效地帮助您。

于 2012-08-03T11:29:28.753 回答