java.lang.IllegalStateException:您需要使用Theme.AppCompat主题 - 使用AppCompat主题

时间:2015-12-10 20:48:52

标签: android android-appcompat appcompatactivity

我对一个正在制作的用户有这个例外,它在我尝试的所有手机上的本地构建中都没有发生,我看不出我的配置有什么问题。

堆栈跟踪看起来像:

Message: IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
android.support.v7.app.AppCompatDelegateImplV7.m in SourceFile::2309
android.support.v7.app.AppCompatDelegateImplV7.a in SourceFile::252
android.support.v7.app.AppCompatActivity.setContentView in SourceFile::109
my.package.HomeFragmentActivity.onCreate in SourceFile::80

我的主题定义为:

<style name="AppTheme" parent="@style/Theme.AppCompat.Light">

我的证词是:

    <application
    android:name="my.package.Application"
    android:allowBackup="false"
    android:hardwareAccelerated="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:logo="@drawable/my_logo"
    android:theme="@style/AppTheme">
...
    <activity android:name="my.package.HomeFragmentActivity"
        android:exported="false"
        android:launchMode="singleTask"
        android:screenOrientation="portrait"/>

查看AppCompatDelegateImplV7的源代码,如果主题中不存在windowActionBar,则抛出此异常,当我浏览Theme.AppCompat.Light的层次结构时,它确实看起来像是这样。主题。

这是稍微过时的分支,其中活动实际上扩展了已弃用的ActionBarActivity而不是AppCompatActivity,但它似乎只是在幕后使用AppCompatActivity

App Compat v23.0.1,用户在5.0.1上的Samsung S4上运行。

这可能会发生什么?

编辑我的问题与链接的“重复”问题有所不同,因为在那个问题中OP没有使用Theme.AppCompat主题,而我使用的是Theme.AppCompat主题。

2 个答案:

答案 0 :(得分:1)

经过大量时间花在这上面之后,我得出结论,我的代码没有出错,我希望这是旧版支持库中的一个错误,以及它如何与具体电话。

希望升级到最新的支持库版本将使这个罕见的问题消失给那个用户。

答案 1 :(得分:0)

如果您使用的是androidx库,那么此答案应该会有所帮助:https://stackoverflow.com/a/53749686/6883143

更新

implementation 'androidx.appcompat:appcompat:1.0.0'

implementation 'androidx.appcompat:appcompat:1.0.2'