java.lang.IllegalStateException:您需要使用 Theme.AppCompat 主题 - 同时使用 AppCompat 主题
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme - while using the AppCompat theme
我在生产环境中的一个用户遇到了这个异常,在我尝试过的所有手机上的本地构建中都没有发生这种情况,而且我看不出我的配置有什么问题。
堆栈跟踪看起来像:
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
不在主题中,则会抛出此异常,当我浏览 [=41] 的层次结构时,它确实看起来是这样=] 主题.
这是一个稍旧的分支,其中 activity 实际上扩展了已弃用的 ActionBarActivity
而不是 AppCompatActivity
,但它似乎只是在幕后使用了 AppCompatActivity
两种方式。
App Compat v23.0.1,用户 运行 使用 Samsung S4 on 5.0.1。
这里可能发生了什么?
EDIT 我的问题与链接的 "duplicate" 问题不同,因为在那个问题中,OP 没有使用 Theme.AppCompat 主题,而我正在使用Theme.AppCompat 主题。
在这上面花了很多时间后,我得出的结论是我的代码没有做错任何事情,我希望这是旧版本支持库及其交互方式中的错误具体 phone.
希望升级到最新的支持库版本可以解决这个罕见的问题。
如果您使用的是 androidx 库,那么这个答案应该有所帮助:
更新自
implementation 'androidx.appcompat:appcompat:1.0.0'
至
implementation 'androidx.appcompat:appcompat:1.0.2'
我在生产环境中的一个用户遇到了这个异常,在我尝试过的所有手机上的本地构建中都没有发生这种情况,而且我看不出我的配置有什么问题。
堆栈跟踪看起来像:
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
不在主题中,则会抛出此异常,当我浏览 [=41] 的层次结构时,它确实看起来是这样=] 主题.
这是一个稍旧的分支,其中 activity 实际上扩展了已弃用的 ActionBarActivity
而不是 AppCompatActivity
,但它似乎只是在幕后使用了 AppCompatActivity
两种方式。
App Compat v23.0.1,用户 运行 使用 Samsung S4 on 5.0.1。
这里可能发生了什么?
EDIT 我的问题与链接的 "duplicate" 问题不同,因为在那个问题中,OP 没有使用 Theme.AppCompat 主题,而我正在使用Theme.AppCompat 主题。
在这上面花了很多时间后,我得出的结论是我的代码没有做错任何事情,我希望这是旧版本支持库及其交互方式中的错误具体 phone.
希望升级到最新的支持库版本可以解决这个罕见的问题。
如果您使用的是 androidx 库,那么这个答案应该有所帮助:
更新自
implementation 'androidx.appcompat:appcompat:1.0.0'
至
implementation 'androidx.appcompat:appcompat:1.0.2'