【Android】Theme.AppCompat相关

##错误日志

You need to use a Theme.AppCompat theme (or descendant) with this activity

##可能出现的几种情况

  1. 使用了 ActionBarActivity,但是没有使用 Theme.AppCompat 主题

  2. 在安装 Android 5 系统的机器上使用

##出现的原因

  1. ActionBarActivity 在 Support Library V7 里面,强制主题必须是 Theme.AppCompat 或者其后代, 如果使用了 ActionBarActivity 但是没有使用 Theme.AppCompat 的话就会崩溃 2.当使用 Android studio 创建工程的时候,会自动创建res/values-v21/styles.xml文件,内容如下:

     <resources>
         <style name="AppTheme" parent="android:Theme.Material.Light">
         </style>
     </resources>
    

    这里没有使用 Theme.AppCompat 主题,而且也不存在 Theme.AppCompat.Material 之类的主题, 因此,在 Android 5 机器上使用的时候,会使用 res/values-v21/styles.xml 里面的主题定义,因此与 ActionBarActivity 冲突,所以崩溃

##解决办法

  1. 对于第一种情况,直接将主题修改为 Theme.AppCompat 就行了

  2. 对于第二种情况,可以删掉values-v21/styles.xml里面的定义,或者将里面的定义修改为

     <resources>
         <style name="AppTheme" parent="Theme.AppCompat">
         </style>
     </resources>
    

##补充知识

Support Library 里面的 Theme.AppCompat 是继承的 Platform.AppCompat,因此,对于 Android 5 系统来说,Theme.AppCompat本身就是继承的 Material 风格。 因此,如果想使用 Material 设计,并没有必要去定义一个新的主题,所以感觉 Android studio 在创建工程的时候有点问题。

Android分享 Q群:315658668

转载于:https://my.oschina.net/xesam/blog/347260

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值