应用程序在样式下更改主题时崩溃

Sai*_*S.R 5 android android-compatibility android-theme android-studio android-styles

我的安卓应用:

目标 AP I:22

最小 API : 15

设备运行于:API 级别22

我不明白整个主题概念,

在我的manifest.xml,我已经设置 android:theme="@style/AppTheme"

并且所有活动都使用这个主题

现在我的理解是,他们都使用名为的主题AppTheme,我现在可以通过在我的内部扩展其他主题来定义styles.xml

在我的 styles.xml

我有这个

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
    </style>

</resources>
Run Code Online (Sandbox Code Playgroud)

我的理解是, AppCompat主题也允许我们在旧设备上使用更新的(比如材料主题)。我在 API Level 22 和 API Level 15 上运行这个应用程序,它工作正常

现在当我把它改成

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="android:Theme.Material">
        <!-- Customize your theme here. -->
    </style>

</resources>
Run Code Online (Sandbox Code Playgroud)

它给出了一个警告,说这个主题只能在 API 21 或更高版本上使用,这是正确的,现在当我忽略警告并在 API 22 上运行它时,它会崩溃。为什么?

我还尝试将 AppTheme 的父级设置为 Holo、Light 等,它们都使应用程序崩溃,为什么,请解释一下?

所有这些最终都会导致应用程序崩溃

<style name="AppTheme" parent="android:Theme.Translucent">
   <style name="AppTheme" parent="android:Theme.Holo">
Run Code Online (Sandbox Code Playgroud)

为什么这些不起作用,Holo 是在 15 中引入的,对吗?

我正在使用 22 ,

能否请您详细说明 Theme....., BaseTheme....,Android..... themeName 之间的区别

我正在运行 android studio 1.3 并使用最新版本(稳定版)的 SDK、SDK 构建和 SDK 平台工具。谢谢 !

Sai*_*S.R 3

抱歉,我发现了这个问题,我的活动正在扩展 AppCompatActivity 而不是一般活动,我现在明白了

  • 那是什么意思? (3认同)