web-dev-qa-db-fra.com

Android XML: RuntimeException: échec de la résolution de l'attribut à l'index 6

Bonjour cher stackoverflower,

Dans mon projet, j'utilise la nouvelle "bibliothèque de conception Android"… .. Le problème est qu’il existe une exception d’exécution qui indique (Je tente de créer un FloatingButton):

 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)

J'ai pu comprendre que l'attribut ne peut pas être résolu:

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

Cela se trouve dans le répertoire res/values ​​/ styles/styles.xml de la bibliothèque de design Android.

j'ai lu dans this post que l 'API lvl devrait être 21+. Mais comme la bibliothèque de conception prend en charge l’API 7+, cela ne devrait pas poser de problème.

Il convient également de mentionner que je n’ai pas inclus la bibliothèque de conception en tant que dépendance de rangée comme celle-ci:

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

J'ajoute la bibliothèque manuellement au projet car le serveur Jenkins n'a pas d'accès Internet. J'ai mis à jour la bibliothèque support-v4 à 21.2.0 Appcompat support-v7 est également inclus et mis à jour.

Voici le fichier gradle Android-design-library:

Android {
compileSdkVersion 21
buildToolsVersion "21.1.2"

defaultConfig {
    minSdkVersion 17
    targetSdkVersion 21
}

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

Ce serait génial si quelqu'un peut m'aider.

33
Paul Reznik

Couru dans ce problème moi-même. C'est parce que mon application n'utilise pas encore AppCompat, mais uniquement le support habituel FragmentActivity. Cela signifie que FloatingActionButton recherchait deux attributs de thème et ne pouvait pas les trouver.

L'ajout spécifique de ces attributs manquants l'a fait fonctionner pour moi sans qu'il soit nécessaire de commencer à utiliser AppCompat.

<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

Avait le même problème parce que nous avons utilisé getApplicationContext() au lieu de Activity pour extraire LayoutInflater et gonfler la vue de l'élément pour l'adaptateur de liste.

12
orium

Vous pouvez résoudre ce problème en utilisant Theme.AppCompat.Light comme thème parent de votre activité . Add: La raison en est qu'un des styles par défaut utilisant inner dans FloatingActionButton est declare comme ceci:  enter image description here le backgroundTint fait référence à un autre attribut colorAccent qui devrait être une mesure déclarée dans notre thème, sinon l'exception pourrait être throw . Mais colorAccent est déclaré dans AppCompat Theme et ne l'a pas été dans le thème par défaut sdk. Pour mesurer que nous pouvons utiliser correctement la bibliothèque de conception en cours d’exécution, l’un des moyens les plus simples consiste à mesurer l’utilisation de AppCompat Theme comme Theme.AppCompat.Light.

7
Gnod

Assurez-vous que votre thème. 

Mon thème :

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

Cela est dû à plusieurs fichiers style.xml.

Ajoutez la ligne ci-dessous dans le fichier build.gradle de votre application:

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

Dans mon cas, j'ai eu une erreur à setContentView(R.layout.my_layout). Dans my_layout, j’utilisais app:errorEnabled="true" dans une TextInputLayout qui a causé l’erreur. Supprimé cette ligne, et cela a fonctionné.

0
Tincho825

J'utilisais un attribut personnalisé dans attrs.xml et une customview. J'ai rencontré ce problème car je n'avais pas spécifié l'attribut theme: dans la vue personnalisée. Aperçu rapide de l'apparence des fichiers

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

Dans mon styles.xml, j'ai étendu mon style pour utiliser AppTheme

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

Le coupable ici était l'attribut personnalisé? TextColorPrimary . N'ayant pas défini AppTheme dans la vue personnalisée, il n'a pas été possible de déterminer comment charger textColorPrimary. Par Android: theme = "@ style/AppTheme" , cela a été corrigé))

0
Jainam Jhaveri