扩展类android.support.v7.widget.Toolbar时出错。我的错误或错误?

时间:2015-04-25 15:59:27

标签: android android-studio android-support-library android-appcompat android-styles

使用SDK 22预览时,我的所有布局都出现以下渲染问题。

  

填写类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'

最后注意:我没有使用工具栏。

2 个答案:

答案 0 :(得分:4)

编辑:

从另一个SO question读取。

如果您的活动延伸AppCompactActivity,则您的父主题应为

<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar" />

如果使用ActionBarActivity,则主题应为

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar" />
  

我认为差异是故意的,而不是错误。请随时   纠正我,如果我错了,因为我无法从任何地方同样地证明这一点   爱好。

OLD:

要将工具栏用作操作栏,您需要做的第一件事就是禁用装饰提供的操作栏。最简单的方法是让您的主题从Theme.AppCompat.NoActionBar(或轻量级变体)扩展。

使用:

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar" />

From this post.

答案 1 :(得分:2)

就我而言,解决方案就像

一样简单
  1. @style添加到父主题

    <style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
    
  2. android.support.v7.widget.

  3. 中移除Toolbar
  4. app:theme移至android:theme

    <Toolbar
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/toolbar"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:minHeight="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />