我正在创建一个Android应用程序,我正在使用Material Design组件。我使用Material设计主题(android:Theme.Material),通过 android:Theme.Material 扩展我的风格。 / p>
<style name="MyMaterialTheme.Base" parent="android:Theme.Material.Light">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:navigationBarColor">@color/navigationBarColor</item>
<item name="android:displayOptions">disableHome</item>
</style>
现在,问题是我也想使用工具栏,但是当我遵循许多教程时,我需要将 Theme.AppCompat 作为我的父主题,如果我想使用工具栏。
我尝试使用Material Design Theme,但是把错误抛给了我
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity
所以,我的问题是,我不能在工具栏中使用Material Design主题(因为我也使用Card Views,所以最好使用Material Design Theme)?
注意: - 我使用 AppCompact 主题整合了工具栏,但我只想使用Material Design主题。
答案 0 :(得分:3)
将父级设置为&#34; @android:style / Theme.Material.Light.NoActionBar&#34;并在您的活动中使用AppCompatActivity。
答案 1 :(得分:1)
你正在
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity
因为Activity
从AppCompatActivity
延伸并使用它,所以您的活动主题必须具有Theme.AppCompat或后代。
您可以在活动中使用Toolbar
,而不是像AppCompatActivity
那样Theme.AppCompat
延伸。但是你仍然需要一个android:Theme.Material
后代。
顺便说一句。为什么需要专门var stateObj = { foo: "bar" };
history.pushState(stateObj, "page 2", "bar.html");
?
答案 2 :(得分:0)
您需要更新清单中的主题。
编辑您的主题条目,如下所示:
android:theme="@style/Theme.AppCompat"