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,当我浏览 Theme.AppCompat.Light 主题的层次结构时,它看起来确实如此。

这是一个稍旧的分支,活动实际上扩展了已弃用的ActionBarActivitynot AppCompatActivity,但它似乎只是AppCompatActivity在幕后使用。

App Compat v23.0.1 并且用户在三星 S4 上运行 5.0.1。

这里会发生什么?

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

4

2 回答 2

1

在花了很多时间在这之后,我得出结论,我的代码没有做错任何事情,我希望这是旧版本的支持库中的一个错误,以及它与特定手机的交互方式。

希望升级到最新的支持库版本将使该用户解决这个罕见的问题。

于 2015-12-12T01:33:55.220 回答
0

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

更新自

implementation 'androidx.appcompat:appcompat:1.0.0'

implementation 'androidx.appcompat:appcompat:1.0.2'
于 2018-12-12T19:05:27.137 回答