首页 > 代码库 > 【Android】Theme.AppCompat相关

【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

【Android】Theme.AppCompat相关