使用SDK 22预览时,我的所有布局都出现以下渲染问题.
Error inflating class android.support.v7.widget.Toolbar.
java.lang.NoSuchFieldError: View_theme
就我而言,问题是styles.xml:
带渲染问题的XML:
<resources> <style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar" /> <!-- Base application theme. --> <style name="AppTheme" parent="AppBaseTheme"> <item name="colorPrimary">@color/primary</item> <item name="colorPrimaryDark">@color/primary_dark</item> <item name="colorAccent">@color/accent</item> <item name="android:textColorPrimary">@color/primary_text</item> </style> </resources>
XML没有问题:
<resources> <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar" /> <!-- Base application theme. --> <style name="AppTheme" parent="AppBaseTheme"> <item name="colorPrimary">@color/primary</item> <item name="colorPrimaryDark">@color/primary_dark</item> <item name="colorAccent">@color/accent</item> <item name="android:textColorPrimary">@color/primary_text</item> </style> </resources>
请注意我必须在父引用中添加@ style /.这似乎解决了我的问题(重建后).
问题,这是我的错误还是错误?很多教程都没说(Including Official Android Page)
摇篮:
compileSdkVersion 22 buildToolsVersion '22.0.1' minSdkVersion 15 targetSdkVersion 22 classpath 'com.android.tools.build:gradle:1.1.0'
最后注意:我没有使用工具栏.
解决方法
编辑:
从另一个SO question读.
如果您的活动扩展了AppCompactActivity,那么您的父主题应该是
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar" />
如果使用ActionBarActivity,主题应该是
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar" />
I think the difference is on purpose,and not a bug. Please feel free
to correct me if i am wrong as i cannot conferm the same from anywhere
yet.
老:
要将工具栏用作操作栏,您需要做的第一件事就是禁用装饰提供的操作栏.最简单的方法是让您的主题从Theme.AppCompat.NoActionBar(或轻型变体)扩展.
使用 :
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar" />