对于生产中的一位用户,我有这个例外,它不会发生在我尝试过的所有手机的本地版本上,我看不出我的配置有什么问题。
堆栈跟踪如下所示:
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
not AppCompatActivity
,但它似乎只是AppCompatActivity
在幕后使用。
App Compat v23.0.1 并且用户在三星 S4 上运行 5.0.1。
这里会发生什么?
编辑我的问题与链接的“重复”问题不同,因为在那个问题中,OP 没有使用 Theme.AppCompat 主题,而我使用的是 Theme.AppCompat 主题。