AppCompat不支持当前主题的功能 - 没有任何作用

48

我正在尝试在我的项目中使用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);
}
}

样式.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 中的所有代码,并使用 setContentViewfindViewById(R.id.toolbar) 的常规方式进行操作。唯一让我困扰的是,我将 windowNoTitle 设置为 true,但在日志中它显示为 false

有什么帮助吗?


请在 https://dev59.com/L2Ij5IYBdhLWcg3wGBbj 中检查答案。 - Joe Bowbeer
我把它们两个加起来了,结果正常。 - Juan José Melero Gómez
7个回答

134

变更:

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

致:

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

2
什么是区别? - Mina F. Beshay
在我的情况下,与您的解释相反。 - Marcel Hofgesang

16

对于遇到类似问题的其他人,我刚刚找到了解决方法:

显然存在另一个名称为“AppTheme”的主题。我不知道为什么和怎么回事,但是更改我的主题名称就解决了问题。

这就是针对我的问题的答案。


在我的情况下起作用了 - 我的项目一开始是工作的,然后我引入了一个自定义视图,它开始像这样崩溃。更改名称解决了问题。我想在自定义视图的 gradle 导入中,有一个“AppTheme”的定义。 - roberto tomás
1
将**parent="AppTheme"更改为parent="Theme.AppCompat.Light.NoActionBar"**后,代码可以正常工作。 - FabioStein

1
在AndroidManifest.xml文件的Activity MainActivity中添加它们,就像这样:

        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>


0

我遇到了同样的问题,重新构建我的项目解决了这个问题。希望能对某些人有所帮助。


0
在迁移到 Material3 时,我遇到了同样的问题。你需要做的是扩展 NoActionBar 主题。
这个:
<style name="Theme.AppDefault" parent="@style/Theme.Material3.DayNight">

必须更改为:

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

0
在 theme.xml 文件中,已设置
<item name="windowNoTitle">false</item>

变为false。现在改为true。

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

如果你做了这个,那就去做那个。


-2

将此代码复制到你的主题样式中:

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


为什么这是一个常见的答案?看着错误日志,它明确地说相反的话:“windowAcitonBar: false”不受支持。 - roberto tomás

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接