我对一个正在制作的用户有这个例外,它在我尝试的所有手机上的本地构建中都没有发生,我看不出我的配置有什么问题。
堆栈跟踪看起来像:
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主题。
答案 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'