android - ActionBarCompat : java. lang.IllegalStateException : You need to use a Theme. AppCompat

标签 android android-actionbar runtimeexception

我在 Android 2.3.5 上遇到 RuntimeException,但我使用 Theme.AppCompat (res/values/themes.xml)。这是电话:http://www.gsmarena.com/samsung_galaxy_y_s5360-4117.php

 <!-- res/values/themes.xml -->
 <?xml version="1.0" encoding="utf-8"?>
 <resources>

     <style name="Theme.Styled" parent="@style/Theme.AppCompat">
         <item name="actionBarStyle">@style/QueryActionBar</item>
         <item name="android:actionBarStyle">@style/QueryActionBar</item>
     </style>

     <style name="QueryActionBar" parent="@style/Widget.AppCompat.ActionBar">
         <item name="background">@color/blueback</item>
         <item name="android:background">@color/blueback</item>
         <item name="backgroundSplit">@color/blueback</item>
         <item name="android:backgroundSplit">@color/blueback</item>
     </style>

 </resources>

这是 values-v11 的文件。

 <!-- res/values-v11/themes.xml -->
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
    <style name="QueryTheme" parent="@android:style/Theme.Holo">
    <!-- Any customizations for your app running on devices with Theme.Holo here -->
    </style>
 </resources>

这是错误。

 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.txt2lrn.www/com.txt2lrn.www.LandingActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
 at android.app.ActivityThread.access$1500(ActivityThread.java:117)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
 at android.os.Handler.dispatchMessage(Handler.java:99)
 at android.os.Looper.loop(Looper.java:130)
 at android.app.ActivityThread.main(ActivityThread.java:3687)
 at java.lang.reflect.Method.invokeNative(Native Method)
 at java.lang.reflect.Method.invoke(Method.java:507)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
 at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
 at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:102)
 at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98)
 at com.txt2lrn.www.LandingActivity.onCreate(LandingActivity.java:95)
 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
 ... 11 more

抱歉,我在 AndroidManifest.xml 中也定义了 android:theme="@style/Theme.Styled"。

最佳答案

如果您在 MainActivity 中扩展 ActionBarActivity,您还必须更改 values-v11 中的父主题。
所以 values-v11 中的 style.xml 将是 -

 <!-- res/values-v11/themes.xml -->
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
    <style name="QueryTheme" parent="@style/Theme.AppCompat">
    <!-- Any customizations for your app running on devices with Theme.Holo here -->
    </style>
 </resources>

编辑:我建议您停止使用 ActionBar 并开始使用 Android Design Support Library 中包含的 AppBar 布局。

关于android - ActionBarCompat : java. lang.IllegalStateException : You need to use a Theme. AppCompat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18063395/

相关文章:

java - 如何运行后台服务,即使应用程序在 MI 设备中被杀死

android - Godot 扩展 c++ 模块与 android 模块。有什么不同?

android - ShareActionProvider 和操作栏 sherlock 溢出问题

android - 我无法在实现 ActionTab 监听器的另一个 fragment 的 onTabSelected 中调用 fragment

java.lang.RuntimeException : takePicture failed

java - 给定方法签名 A bar(B q) throws C,以下哪项将无法编译?

java - 即使数据通过,Android Intent 也是空的

android - 来自 SherlockFragment (ClassCastException) 的 ActionBar 菜单膨胀错误

java - 确保类名存在,是公共(public)的,并且具有类名和空构造函数的公共(public) fragment 的空构造函数

android - 使用 appium 和 Protractor 在设备浏览器上并行执行