webentwicklung-frage-antwort-db.com.de

Android XML: RuntimeException: Attribut bei Index 6 konnte nicht aufgelöst werden

Hallo liebe stackoverflower,

In meinem Projekt verwende ich die neue "Android Design Library" . Das Problem ist, dass es eine Laufzeitausnahme gibt, die besagt (Ich versuche, ein FloatingButton zu erstellen):

 Java.lang.RuntimeException: Failed to resolve attribute at index 6
        at Android.content.res.TypedArray.getColorStateList(TypedArray.Java:426)
        at Android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.Java:91)
        at Android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.Java:79)
        at Android.support.design.widget.FloatingActionButton.<init>(FloatingActionButton.Java:75)

Ich konnte herausfinden, welches Attribut nicht aufgelöst werden kann:

<style name="Widget.Design.FloatingActionButton" parent="Android:Widget">
    <item name="Android:background">@drawable/fab_background</item>
    <item name="backgroundTint">?attr/colorAccent</item>  **!! this one is missing !!**
    <item name="fabSize">normal</item>
    <item name="elevation">@dimen/fab_elevation</item>
    <item name="pressedTranslationZ">@dimen/fab_translation_z_pressed</item>
    <item name="rippleColor">?attr/colorControlHighlight</item>
    <item name="borderWidth">@dimen/fab_border_width</item>
</style>

Diese befindet sich in res/values ​​/ styles/styles.xml in der Android-Design-Bibliothek

ich habe in this post gelesen, dass die API lvl bis 21+ sollte. Da die Design-Bibliothek jedoch API 7+ unterstützt, sollte dies eigentlich kein Problem sein.

Es ist auch erwähnenswert, dass ich die Designbibliothek nicht als solche Abhängigkeitsabhängigkeit aufgenommen habe:

 compile 'com.Android.support:design:22.2.0'

Ich füge die Bibliothek manuell zum Projekt hinzu, da der Jenkins-Server über keinen Internetzugang verfügt. __ Ich habe die Bibliothek support-v4 auf 21.2.0 aktualisiert Außerdem ist appcompat support-v7 enthalten und aktualisiert.

Hier ist die Android-Design-Library-Gradle-Datei:

Android {
compileSdkVersion 21
buildToolsVersion "21.1.2"

defaultConfig {
    minSdkVersion 17
    targetSdkVersion 21
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.txt'
    }
}

Es wäre toll, wenn mir jemand helfen kann.

33
Paul Reznik

Ich bin selbst in dieses Problem geraten. Dies liegt daran, dass meine App AppCompat noch nicht verwendet, aber nur die reguläre Unterstützung FragmentActivity. Dies bedeutet, dass FloatingActionButton nach zwei Designattributen gesucht hat und sie nicht finden konnte.

Durch das Hinzufügen dieser fehlenden Attribute konnte es für mich funktionieren, ohne AppCompat verwenden zu müssen.

<LinearLayout
    ...
    xmlns:app="http://schemas.Android.com/apk/res-auto" 
    .../>

    <Android.support.design.widget.FloatingActionButton
        ...
        app:backgroundTint="@color/{some color statelist}"
        app:rippleColor="@color/{some color statelist}"
        ... />

</LinearLayout>
27
Kevin Grant

Hatte dasselbe Problem, weil getApplicationContext() anstelle von Activity verwendet wurde, um LayoutInflater abzurufen und die Elementansicht für den Listenadapter aufzublasen.

12
orium

Sie können dieses Problem lösen, indem Sie Theme.AppCompat.Light als übergeordnetes Thema Ihrer Aktivität verwenden Add: Der Grund ist, dass einer der Standardstile, der inner in FloatingActionButton verwendet, wie folgt deklariert ist: enter image description here Der HintergrundTint bezieht sich auf ein anderes Attribut colorAccent, das in unserem Thema als Maß deklariert werden sollte. Andernfalls könnte die Ausnahme throw ..__ sein. colorAccent ist jedoch im AppCompat-Design deklariert und wurde nicht im sdk-Standarddesign angegeben. Um zu messen, dass wir die Design-Bibliothek beim Ausführen korrekt verwenden können, besteht eine einfache Möglichkeit darin, die Verwendung des AppCompat-Designs wie Theme.AppCompat.Light zu messen.

7
Gnod

Stellen Sie sicher, dass Ihr Thema. 

Mein Thema :

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">#2196F3</item>
    <item name="colorPrimaryDark">#1565C0</item>
    <item name="colorAccent">#E91E63</item>
</style>
4
dupengtao

Dies liegt an mehreren style.xml-Dateien.

Fügen Sie in Ihrer App build.gradle -Datei folgende Zeile hinzu:

compile 'com.Android.support:design:22.2.0'
3
Arun kumar

In meinem Fall hatte ich einen Fehler bei setContentView(R.layout.my_layout). In my_layout verwendete ich app:errorEnabled="true" in einer TextInputLayout, die den Fehler verursacht hat. Die Zeile wurde entfernt und es hat funktioniert.

0
Tincho825

Ich habe ein benutzerdefiniertes Attribut in attrs.xml und eine benutzerdefinierte Ansicht verwendet. Ich bin auf dieses Problem gestoßen, da ich in der benutzerdefinierten Ansicht kein theme:-Attribut angegeben habe. Ein kurzer Blick auf das Aussehen der Dateien

attrs.xml

<resources>
    <attr name="textColorPrimary" format="reference" />
    ...
</resources>

customview.xml

<TextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/tvText"
    style="@style/TitleBlackThin"
    Android:theme="@style/AppTheme"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:gravity="center_vertical"
    Android:padding="16dp"
    Android:text="@string/text" />

In meiner styles.xml habe ich meinen Stil erweitert, um AppTheme zu verwenden

<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
         <item name="textColorPrimary">@color/black</item>
    </style>
 ...
    <style name="TitleBlackThin">
        <item name="Android:textSize">20sp</item>
        <item name="Android:fontFamily">sans-serif-light</item>
        <item name="Android:textStyle">normal</item>
        <item name="Android:textColor">?textColorPrimary</item>
    </style>
...
</resources>

Der Schuldige war hier das benutzerdefinierte Attribut? TextColorPrimary . Da ich AppTheme in der benutzerdefinierten Ansicht nicht definiert habe, konnte es nicht festgelegt werden, wie textColorPrimary geladen wird. Von Android: theme = "@ style/AppTheme" , dies wurde behoben))

0
Jainam Jhaveri