我一直在尝试实现Material Design主题,遵循these instructions。
- 我没有使用
ToolBar
(必须使用吗?)) - 我的所有活动都扩展了ActionBarActivity。
- 在整个项目中使用
getSupportActionBar()
。 - 我在gradle中编译并定位到API 21(最小是API 15)。
- 我的
<application>
标签包含android:theme="@style/AppTheme"
- 在棒棒糖设备上运行应用程序(具有特定的v21类似主题)。
My styles.xml:
<style name="AppBaseTheme" parent="@style/Theme.AppCompat">
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>
<style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar.Solid">
<item name="displayOptions">useLogo|showHome</item>
<item name="logo">@drawable/home_page_logo</item>
<item name="background">@color/actionbar_background_color</item>
<item name="textColor">@color/white</item>
<item name="titleTextStyle">@style/MyActionBarTextStyle</item>
</style>
无论我尝试什么,应用程序都会在我在onCreate()
上启动主Activity的第二次崩溃,并显示以下崩溃日志:
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:151)
at android.support.v7.app.ActionBarActivityDelegateBase.onCreate(ActionBarActivityDelegateBase.java:138)
at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:123)
有人遇到过这个问题吗?有什么建议可以解释这是什么原因吗?
**编辑:**这肯定是我的styles.xml主题中的东西。如果我强制应用程序使用默认的Theme.AppCompat主题,它就可以工作。什么可能导致主题失败?我验证了ActionBar属性没有使用“android:“。还有别的吗?
4条答案
按热度按时间sigwle7e1#
已解决
我的两个jar库显然有生成的
values.xml
,其中包含AppTheme
和AppBaseTheme
的样式。我只验证了我们的依赖模块,因为jar库不应该声明应用程序主题,特别是不应该使用默认主题的名称。在发布答案之前,我添加到我的
AndroidManifest.xml
<application>
tools:replace="android:theme"
并声明了新的主题,假设它会工作,我的应用程序将覆盖任何其他主题。最后的解决方案是,把我自己的
AppTheme
和AppBaseTheme
重命名为不同的名字,现在它工作了。几个小时都花在这么琐碎的事上。希望这能为其他人腾出一些时间。dtcbnfnu2#
parent
应该是Theme.AppCompat
而不是@style/Theme.AppCompat
。使用
@style/
,您将使用Android API 21中的样式,并且它必须是AppCompat
库中的样式。编辑:
Widget.AppCompat
可能也是这样edit2:
像这样
wxclj1h53#
尝试从styles.xml的第一行删除“@style/”,这样你就有了:
j5fpnvbx4#
在我的例子中,我的themes.xml有以下内容:
由于一些奇怪的原因,有一个“Android:”标签,删除它解决了我的问题。