6

上次更新后,我的应用出现以下问题:

java.lang.RuntimeException: Unable to start activity ComponentInfo{my.package/my.package.MyMainActivity}: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1818)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1834)
at android.app.ActivityThread.access$500(ActivityThread.java:122)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1027)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:132)
at android.app.ActivityThread.main(ActivityThread.java:4126)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:214)
at android.support.v7.app.ActionBarActivityDelegateHC.onCreate(ActionBarActivityDelegateHC.java:38)
at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98)
at my.package.MyBaseActivity.onCreate(MyBaseActivity.java:68)
at my.package.MyApiServiceActivity.onCreate(MyApiServiceActivity.java:51)
at my.package.MyActivity.onCreate(MyActivity.java:88)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1782)
... 11 more

但是,我从不打电话requestWindowFeature或类似情况。也没有涉及对话。报告本身来自BugSense,我自己从来没有遇到过这个问题。这是一个相当流行的应用程序,该问题是Android Honeycomb独有的:3.2、3.2.1 和 3.1。在以前版本的应用程序中没有发生这种情况。自更新以来功能的唯一变化是我从.onCreateActionBarSherlockActionBarCompat

任何人也发现了这个问题和/或有任何想法如何克服这个问题?

编辑: 我正在添加从 v7 包的源ActionBarActivityDelegateHC链接到崩溃堆栈跟踪(由...引起)开始的地方。那里发生了 requestFeature 调用,但它被正确调用,甚至在super.onCreate.

我使用 Gradle 导入包:compile 'com.android.support:appcompat-v7:18.0.+'

4

1 回答 1

6

所以看起来@shomeser 的解决方案(对问题的评论)是暂时的一种方式。

妥协的方法有两种:

  • 如果横向和纵向没有不同的布局,则可以禁用方向更改(在 AndroidManifest: 中android:configChanges="screenSize|orientation"
  • 如果您对方向更改进行了一些处理并且无法使用“configChanges”,您可以锁定方向(在onCreate
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB
            || Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB_MR2)
    {
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }
  • 最后是我最不喜欢的(尽管将其发布为完成),放弃 ABC 并返回 ABS。

我还在Android Issue Tracker 上发布了一张票,但这是一个 Honeycomb 问题,我不希望得到答案。

更新:在针对特定 Honeycomb 设备发布锁定方向的应用程序后,我仍然看到报告了此崩溃,但频率较低。

更新 2: 问题已修复!现在只需等待新支持库的发布:google issue tracker

于 2013-10-11T10:39:31.527 回答