- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读 developers.android.com 上的教程,但在设置操作栏样式时遇到了问题。我使用最新的 SDK(与 Eclipse bundle 在一起)。
比如说,我在 values-v14/styles.xml 中有
<style name="MessageTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar">
我已经尝试了我能找到的所有变体。也尝试在 values-v11 中不使用 DarkActionBar。它编译得很好但是当我打开这样样式的 Activity 时,应用程序崩溃并且 logcat 说
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
正如我所说,API 设置正确。项目属性(API 19)中的目标之一和 list 中的 android:minSdkVersion="14"(也尝试过更高)。
现在,我的 Activity 扩展了 ActionBarActivity(文件就是这样生成的)。如果我改为扩展 Activity,则 Holo 可以正常工作。这是我找到的答案,但我不明白为什么会这样。 ActionBarActivity 和 Activity 之间到底有什么区别使它起作用,这是一些 hack 还是应该以这种方式完成?此外,这适用于我的额外 Activity 。如果我尝试使用教程中的主要 Activity 进行此操作,它不会编译,因为那里使用的 2 个方法未定义 - getSupportActionBar 和 getSupportFragmentManager。
最佳答案
您正在使用兼容性库,因此要设置支持 actionBar 的样式,您需要使主题成为 appCompat 的后代。
试试这个:
<style name="Theme.whatever" parent="@style/Theme.AppCompat.Light.DarkActionBar">
如果你还是有点迷茫,你可以用这个工具生成你的主题:ActionBar style generator看看它是如何完成的。
编辑:
检查一下,还有:Styling the Action Bar
请参阅“适用于 Android 2.1 及更高版本”
关于Activity和ActionBarActivity的区别...
据我所知,如果您需要在低于 3.0 的 android 版本时有一个操作栏,您可以扩展 ActionBarActiviy。这就是为什么您在使用 actionBar 或 supportActionBar 时遇到问题,具体取决于您正在编码的 Activity 类型。
因此,总而言之,在使用 Acivity 时调用 actionBar , 但如果你正在扩展 ActionBarActivity 你应该调用 SupportActionBar.例如:getSupportActionBar()。
您可以使用的更多信息:Support Library Features
编辑 2:Android 正在对您大喊大叫,因为您正在尝试使用 appCompat 功能。为了在您的特定实例中避免这种情况,您需要做的就是不扩展 ActionBarActivity,而是编写常规 Activity 。然后像往常一样使用 ActionBar 功能。
编辑 3 并且可能是最后一个:
假设您正在使用 holo 作为主题,并且您正在为 API 11 及更高版本编写常规 Acitivty。在这种情况下,您没有扩展 ActionBarActiviy,因此您不必做任何特别的事情。没关系,对吧?但是现在,您希望同样的事情适用于低于 11 的 API 版本,这就是您真正的问题。要做到这一点,您必须扩展 ActionBarActivity,但您没有这样做。所以你唯一的出路(据我所知)是有另一个扩展 ActionBarActivity 的 Activity ,并以某种方式检测代码,哪个版本的 android 正在运行,以便执行正确的代码(这是你的哪个类两个你应该利用)这样你的应用程序就能够避免崩溃。
这就是为什么我认为只使用 appComapt 是一个不错的解决方案,假设您真的不需要使用 holo。但是,如果你真的想那样做......
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
// Use a regular Activity class for API 11 and above.
}
else{
// Use an activity extending ActionBarActivity. Have in mind that here you would be calling a supportActionBar instead of a regular ActionBar.
}
关于android - 不能将 Holo 主题与 ActionBarActivity 子项一起使用(选择了正确的 API),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23799830/
这个问题已经有答案了: ActionBarActivity is deprecated [duplicate] (3 个回答) 已关闭 8 年前。 如何解决 Eclipse 中导入 android.s
我正在学习如何在 Android Studio 中使用 NDK 的教程:http://www.ph0b.com/android-studio-gradle-and-ndk-integration/ 我
当我尝试导入它时,收到错误“无法解析符号 ActionBarActivity”。 我阅读了有关同一问题的问题并阅读了答案并尝试解决该问题,但无济于事。 我使用的是 android studio 版本
我正在使用这个模板 https://github.com/kanytu/android-material-drawer-template只是为了尝试 material design,所以我实现了一些
在我的 android Studio 中,编译器无法找到 ActionBarActivity。因此,我遇到了很多错误。编译器无法导入 ActionBarActivity 和 ActionBar 类。这
这个问题在这里已经有了答案: Why was ActionBarActivity deprecated (3 个回答) 关闭6年前。 其实没有问题。项目编译并运行。但我不明白什么是删除类名的意思(An
几天前,我将 android studio 和 gradle 更新到了 4.4.1。当我尝试创建一个类主 Activity 来扩展 actionbaractivity 时,如下所示 publi
我正在尝试使用 GitHub 存储库中的侧菜单。菜单的动画需要一个类 ViewAnimator 来获取参数 ActionBarActivity,在示例中给出为 this(即 MainActivity,
我有一个使用搜索小部件的有效搜索实现,就像在从 Activity 扩展的 Activity 内部一样: @Override public boolean onCreateOptionsMenu(Men
我一直在尝试遵循 Android 聊天应用程序的教程。 我已经完成了使用 AppCompatActivity 和 ActionBarActivity 所需的所有配置,但是当我尝试运行我的应用程序时,它
我对 ActionBarActivity 和 ViewPager 有疑问。 在我的“主 Activity ”上,这是一个 ActionBarActivity,我有一些选项卡,它们是 fragment
是否可以将操作栏添加到 android 应用程序:1) 没有子类化 ActionBarActivity2) 支持 Gingerbread 和更新 我搜索了 google 和 SO,没有结果。 我问这个
我在 ActionBarActivity 中搜索了多个 Intent 和 fragment 的示例。我正在从 Deitel 系列和其他信息丰富的资源中学习 android 编程。我面临的障碍是从使用
我正在使用 Toolbar在 fragment (覆盖整个屏幕)内,我想显示后退按钮,但我不能使用 getSupportActionBar().setDisplayHomeAsUpEnabled(tr
我正在尝试从 ActionBarActivity 扩展我的类,但不能,我已经尝试了所有可能的方法。我正在导入 android.support.v7.app.ActionBarActivity;我想按照
我有一个扩展 FragmentActivity 和导入 android 库 v4 的类。现在我想在我的 Activity 中实现 Navigation Drawer,我想扩展 ActionBarAct
我在我的应用程序中使用 android.support.v7.widget.Toolbar。 我可以通过 getSupportActionBar().setIcon() 设置图标。并通过 toolba
我已经尝试使缓存无效并重新启动,但它仍然显示并且不会像以前那样编译和运行。如果我没记错的话,我尝试重命名类文件,并且一定是更改了造成这种情况的名称。它还在 findViewById、.oncreate
我有一个非常奇怪的问题。当我在单击硬件菜单按钮(Android 2.3 设备)后使用 ActionBarActivity 时,应用程序意外关闭,没有任何特定错误。 Logcat 只给出: W/KeyC
我在扩展 ActionBarActivity 时遇到错误捕获。如果我扩展 Activity 则没有错误。 事情是在我的其他 Activity 中它完美地工作。起初,我认为这是因为我之前的 Activi
我是一名优秀的程序员,十分优秀!