我一直在尝试按照these instructions实现Material Design主题。
ToolBar
(我必须吗?)getSupportActionBar()
。<application>
标记包含android:theme="@style/AppTheme"
我的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()
上启动我的主要活动:
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属性没有使用&#34; android:&#34;。还要别的吗?
答案 0 :(得分:7)
已解决......
我的jar库中有2个显然有生成 values.xml
,其中包含AppTheme
和AppBaseTheme
的样式。
我只验证了我们的依赖模块,因为jar库不应该声明应用程序主题,特别是不能使用默认名称。
在发布答案之前,我已添加到AndroidManifest.xml
<application>
tools:replace="android:theme"
并宣布新主题,假设它正常工作,我的应用程序将覆盖任何其他主题。
解决方案最终,实际上是愚蠢的,是将我自己的AppTheme
和AppBaseTheme
重命名为不同的名称,现在它可以运行了。
花在这样一个微不足道的修复上的时间。希望这会为其他人留出一些时间。
答案 1 :(得分:2)
parent
应为Theme.AppCompat
而不是@style/Theme.AppCompat
。
使用@style/
您将使用Android API 21中的样式,它必须是AppCompat
库中的样式。
修改强>
{p>可能与Widget.AppCompat
相同
<强> EDIT2:强>
像这样<style name="AppBaseTheme" parent="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="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>
答案 2 :(得分:0)
尝试从styles.xml的第一行删除“@ style /”,这样就可以了:
<style name="AppBaseTheme" parent="Theme.AppCompat">