2015-06-02 11 views
30

Ciao caro stackoverflower,Android XML: RuntimeException: Impossibile risolvere attribuire al indice 6

Nel mio progetto, io sto usando la nuova "libreria di design Android". Il problema è, che c'è un'eccezione di runtime che dice (Im cercando di creare 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) 

sono stato in grado di capire, che l'attributo non può essere risolto:

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

Questo si trova in res/values ​​/ styles/styles.xml nella libreria di progettazione Android

ho letto in this post che l'API lvl dovrebbe bis 21+. Ma poiché la libreria di progettazione supporta API 7+, questo non dovrebbe essere un problema.

Vale anche la pena di ricordare che non ho incluso la libreria design come Gradle dipendenza come questo:

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

sto aggiungendo la libreria manualmente al progetto perché il server Jenkins non ha accesso a Internet . Ho aggiornato la libreria support-v4 alla versione 21.2.0 anche il supporto app-v7 è incluso e aggiornato.

Ecco il file Gradle Android-design-biblioteca:

android { 
compileSdkVersion 21 
buildToolsVersion "21.1.2" 

defaultConfig { 
    minSdkVersion 17 
    targetSdkVersion 21 
} 

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

Sarebbe bello se qualcuno mi può aiutare.

risposta

25

Ho affrontato personalmente questo problema. È perché la mia app non sta ancora utilizzando AppCompat, ma solo il supporto regolare FragmentActivity. Ciò significa che FloatingActionButton stava cercando due attributi del tema e non è stato in grado di trovarli.

In particolare l'aggiunta di questi attributi mancanti ha funzionato per me senza la necessità di iniziare ad utilizzare 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> 
+0

Purtroppo la mia app non ha l'attributo 'colorAccent', perché non sto usando AppCompat. La soluzione che ho pubblicato dovrebbe funzionare per gli sviluppatori che hanno una configurazione simile a quella che ho descritto. –

+4

Amico ... sei il migliore ... 3 giorni di sbattere la testa .. hai risolto il problema. – Mitech

5

È possibile risolvere questo problema utilizzando Theme.AppCompat.Light come tema genitore vostra attività.

+0

Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post - puoi sempre commentare i tuoi post e, una volta che hai una reputazione sufficiente, potrai commentare qualsiasi post. – Burkely91

4

Assicurati che il tuo tema.

mio tema:

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

Questo in realtà ha risolto il problema nel mio caso. Avevo creato un TextView personalizzato e stavo usando quella vista personalizzata in un layout. Ha funzionato bene fino a quando ho cambiato il tema dell'applicazione nel manifest dell'app e ho iniziato a vedere questo errore. La modifica di Theme.AppCompat.Light ha risolto il problema. Presumo che il tema alternativo che avevo selezionato non contenesse alcuni degli elementi del tema che stavo usando nei miei stili. – Zoccadoum

3

Questo è causa di più di un file style.xml.

Aggiungere al di sotto riga nel file build.gradle app:

compile 'com.android.support:design:22.2.0' 
4

avuto lo stesso problema perché hanno utilizzato getApplicationContext() al posto di attività per recuperare layoutinflater e gonfiare vista voce per l'adattatore lista.

0

Nel mio caso, ho avuto un errore a setContentView(R.layout.my_layout). In my_layout, stavo usando app:errorEnabled="true" in un TextInputLayout che ha causato l'errore. Rimosso quella linea, e ha funzionato.

Problemi correlati