Android requestFeature() окно исключения

После прохождения всех других потоков по запросу необходимо вызвать requestFeature(), прежде чем добавлять контент. Я публикую этот вопрос здесь в качестве крайней меры.

У меня есть действие (расширенное от BaseActivity) с параметром windowActionBarOverlay, установленным в объявлении манифеста, а не программно с использованием метода requestFeature(). Также действие обрабатывает изменения конфигурации.

<activity
        android:name="com.spuul.android.activity.VideoDetailsActivity"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:label="@string/activity_title_movies"
        android:parentActivityName="com.spuul.android.activity.BrowseActivity"
        android:theme="@style/SynopsisTheme">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.spuul.android.activity.BrowseActivity" />

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        </intent-filter>
    </activity>

И тема в стиле выглядит так:

<style name="BaseTheme" parent="@style/Theme.AppCompat">
    <item name="android:windowBackground">@color/window_bg</item>
    <item name="android:divider">@color/divider</item>
    <item name="android:dividerHeight">1dp</item>
    <item name="android:actionBarStyle">@style/ActionBar</item>
    <item name="actionBarStyle">@style/ActionBar</item>
</style>

<style name="SynopsisTheme" parent="@style/BaseTheme">
    <item name="android:windowActionBarOverlay">true</item>
    <item name="windowActionBarOverlay">true</item>
</style>

Тем не менее, я вижу много запросов requestFeature() на моем портале Crashlytics, и хуже всего то, что я не смог воспроизвести эту проблему на моих тестовых устройствах. Надеясь, что кто-то может указать мне в правильном направлении. вот так выглядит stackTrace:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.spuul.android/com.spuul.android.activity.VideoDetailsActivity}: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
   at android.app.ActivityThread.access$700(ActivityThread.java:159)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
   at android.os.Handler.dispatchMessage(Handler.java:99)
   at android.os.Looper.loop(Looper.java:176)
   at android.app.ActivityThread.main(ActivityThread.java:5419)
   at java.lang.reflect.Method.invokeNative(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:525)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
   at dalvik.system.NativeStart.main(NativeStart.java)                          Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
   at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:320)
   at android.app.Activity.requestWindowFeature(Activity.java:3338)
   at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:62)
   at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98)
   at com.spuul.android.activity.BaseActivity.onCreate(BaseActivity.java:104)
   at com.spuul.android.activity.VideoDetailsActivity.onCreate(VideoDetailsActivity.java:222)
   at android.app.Activity.performCreate(Activity.java:5372)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2257)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
   at android.app.ActivityThread.access$700(ActivityThread.java:159)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
   at android.os.Handler.dispatchMessage(Handler.java:99)
   at android.os.Looper.loop(Looper.java:176)
   at android.app.ActivityThread.main(ActivityThread.java:5419)
   at java.lang.reflect.Method.invokeNative(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:525)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
   at dalvik.system.NativeStart.main(NativeStart.java)

ОБНОВИТЬ:
Вот код активности -
VideoDetailsActivity:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.synopsis_activity_layout);
    // Activity UI logic follows
}

BaseActivity:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    try {
        if (getSupportActionBar() != null){
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar()
                .setDisplayOptions(
                        ActionBar.DISPLAY_SHOW_CUSTOM
                                | ActionBar.DISPLAY_USE_LOGO | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_HOME_AS_UP);
        }
    } catch (IllegalStateException ise) {
        ise.printStackTrace();
        if (LogUtil.LOG) LogUtil.e(TAG, "action bar is not supported with this theme..");
    } 
    if (isTablet) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
    } else
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

И есть фрагмент игрока, который устанавливает ориентацию на основе предпочтений пользователя из элементов управления игрока. Я не думаю, что это окажет влияние, потому что ориентация уже регулируется активностью. Более того, из журналов сбоев похоже, что проблема возникает при инициализации активности или может быть при ее воссоздании. Есть идеи, как с этим бороться? Заранее спасибо.

0 ответов

Другие вопросы по тегам