为了账号安全,请及时绑定邮箱和手机立即绑定

升级到AppCompat v22.1.0,现在获取IllegalArgumentException

/ 猿问

升级到AppCompat v22.1.0,现在获取IllegalArgumentException

函数式编程 2019-07-22 15:01:59

升级到AppCompat v22.1.0,现在获取IllegalArgumentException:AppCompat不支持当前主题特性

我刚刚升级了我的应用程序,以使用新发布的v22.1.0AppCompat,现在打开我的应用程序时,我得到了下面的异常。

Caused by: java.lang.IllegalArgumentException: AppCompat does not support the current theme features
        at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:360)
        at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:246)
        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106)

我该怎么解决呢?


查看完整描述

3 回答

?
三国纷争

AppCompat现在对主题窗口标志的期望更加严格,更接近于您从框架中得到的内容。

这背后的主要原因是为了支持AppCompatDialogs我们也加入了这个版本。他们大量使用windowNoTitle标志,这是AppCompat以前没有注意到的。

因此,要解决您的问题,您有两个选项:

简单的方法就是使用Theme.AppCompat.NoActionBar作为你父母的主题。这样做总是正确的。

但是,如果不能这样做(可能需要支持操作栏而不支持操作栏),则应该执行以下操作:

<style name="MyTheme" parent="Theme.AppCompat">
    ...</style><style name="MyTheme.NoActionBar">
    <!-- Both of these are needed -->
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item></style>

你应该回到正轨上了。


查看完整回答
反对 回复 2019-07-22
?
慕粉4167745

那些在所有这些修正之后仍在犯错误的人。

请继承

Theme.AppCompat.Light.NoActionBar

不要用

<item name="windowActionBar">false</item>

那么,你就不会有任何错误。


查看完整回答
反对 回复 2019-07-22
?
牧羊人nacy

我加了

<item name="windowActionBar">false</item><item name="windowNoTitle">true</item>

但这还不够。最后,在活动中的setContentView之前移动Super.onCreate-修复了我的问题:)

   public void onCreate(Bundle savedInstanceState) {    

        super.onCreate(savedInstanceState);    
        setContentView(R.layout.v2_main_dash);
        ...


查看完整回答
反对 回复 2019-07-22

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信