8

Ich hatte das folgende Renderproblem in allen meinen Layouts, wenn ich SDK 22 für die Vorschau verwendete.Fehler beim Aufblasen der Klasse android.support.v7.widget.Toolbar. Mein Fehler oder Fehler?

Error inflating class android.support.v7.widget.Toolbar.

java.lang.NoSuchFieldError: View_theme

In meinem Fall war das Problem styles.xml:

XML mit Rendering-Problem:

<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 ohne Problem:

<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> 

Beachten Sie, wie ich @style/ hinzufügen hatte in der Elternreferenz. Das scheint mein Problem zu lösen (nach einem Umbau).

Frage, ist das ein Fehler auf meiner Seite oder ein Fehler? Viele Tutorials tun Sie es nicht (Including Official Android Page)

Gradle:

compileSdkVersion 22 
buildToolsVersion '22.0.1' 
minSdkVersion 15 
targetSdkVersion 22 
classpath 'com.android.tools.build:gradle:1.1.0' 

Abschließender Hinweis: Ich verwende Toolbar nicht.

+0

sehen diese [link] [1] Dies können Sie [1] helfen: http://stackoverflow.com/questions/29005958/android-sdk-22-searchview-rendering-problems/29822819#29822819 –

+0

@Nilesh, in meinem Fall kann ich zu uns e SDK 22, aber nur wenn ich '@ style' hinzufüge. Kein Downgrade auf SDK 21 erforderlich. – gian1200

+0

Nicht downgrade das SDK ändern nur api 22 bis 21 in Layout-Datei .i.e Vorschau 22 bis 21 –

Antwort

4

EDIT:

von einem anderen SO question Lesen.

Wenn Ihre Aktivität AppCompactActivity erstreckt, Ihre Mutter Thema sollte sein

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

wo, wie bei Verwendung von ActionBarActivity, Thema

<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.

alt sein sollte:

So verwenden Sie die Symbolleiste als a In der ersten Zeile müssen Sie die mit dem Dekor versehene Aktionsleiste deaktivieren. Der einfachste Weg besteht darin, Ihr Theme von Theme.AppCompat.NoActionBar (oder der Light-Variante) zu erweitern.

Verwendung:

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

From this post.

+1

Das ist nur wahr, wenn ich "Toolbar" verwende, aber ich bin nicht. – gian1200

+0

Welche Aktivität erstreckt sich auf Ihre Klasse? ActionBarActivity oder AppCompactActivity? –

+0

Vor dem Update ActionBarActivity. Jetzt verwende ich AppCompactActivity. – gian1200

2

In meinem Fall war Lösung so einfach wie

  1. @style In dem übergeordneten Thema

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

  3. Umzug von app:theme zu 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" />