AppCompat не поддерживает текущие функции темы - ничего не работает

Я пытаюсь использовать MaterialDesign в своем проекте, но постоянно получаю эту ошибку:

Caused by: java.lang.IllegalArgumentException: AppCompat does not support the current theme features: { windowActionBar: false, windowActionBarOverlay: false, android:windowIsFloating: false, windowActionModeOverlay: false, windowNoTitle: false }
        at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:371)
        at android.support.v7.app.AppCompatDelegateImplV7.initWindowDecorActionBar(AppCompatDelegateImplV7.java:173)
        at android.support.v7.app.AppCompatDelegateImplBase.getSupportActionBar(AppCompatDelegateImplBase.java:87)
        at android.support.v7.app.AppCompatDelegateImplV7.setSupportActionBar(AppCompatDelegateImplV7.java:197)
        at android.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:99)
        at de.memorian.playpal.MainActivity.afterInject(MainActivity.java:72)

Я сталкивался с подобными проблемами, но каждый раз получаю одну и ту же ошибку.

MainActivity.java:

@EActivity(R.layout.activity_main)
public class MainActivity extends AppCompatActivity {

@ViewById
protected Toolbar toolbar;

@AfterInject
public void afterInject() {
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
}
}

styles.xml:

<style name="AppTheme" parent="AppTheme.Base"/>

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

стили-v21.xml:

style name="AppTheme" parent="AppTheme.Base">
    <!-- enable window content transitions -->
    <item name="android:windowContentTransitions">true</item>
    <item name="android:windowAllowEnterTransitionOverlap">true</item>
    <item name="android:windowAllowReturnTransitionOverlap">true</item>
    <!-- specify shared element transitions -->
    <item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
    <item name="android:windowSharedElementExitTransition">@android:transition/move</item>
</style>

Я пытался установить родительскую тему для любого происхождения.NoActionBar, но все же. Я также попытался удалить весь код из AndroidAnnotations и сделать это обычным способом с setContentView а также findViewById(R.id.toolbar), Единственное, что меня беспокоит, это то, что я установил windowNoTitle в true но в журнале говорится, что это false,

Любая помощь?

7 ответов

Решение

Для тех, у кого возникла эта проблема, я только что обнаружил проблему: очевидно, существует еще одна тема с именем "AppTheme". Я не знаю почему и как, но изменение названия моей темы решило проблему.

Это был ответ на мою проблему.

Изменить:

<item name="android:windowNoTitle">true</item>

чтобы:

<item name="windowNoTitle">true</item>

Добавьте их в Activity MainActivity в свой файл AndroidManifest.xml

как это

        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/Theme.AppCompat.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

При переходе на Material3 я столкнулся с той же проблемой. Что вам нужно сделать, так это расширить тему NoActionBar .

Этот:

      <style name="Theme.AppDefault" parent="@style/Theme.Material3.DayNight">

Должен быть изменен на:

      <style name="Theme.AppDefault" parent="@style/Theme.Material3.DayNight.NoActionBar">

У меня такая же проблема, и просто перестройка моего проекта решила проблему. Надеюсь, это может помочь кому-то.

В файле theme.xml был установлен

      <item name="windowNoTitle">false</item>

к ложному. поменял на истину.

      <item name="windowNoTitle">true</item>

сделать это, если вы сделали это.

Скопируйте этот код в свой основной стиль:

<style name="Theme.MyTheme" parent="Theme.AppCompat.NoActionBar">

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