2016-03-28 12 views
27

Dai un'occhiata a questo snippet di codice. Ricevo un errore con l'ultima riga, perché sto passando un 'indice' invece di una risorsa. Pensavo fosse un problema di filati e ho cercato di sopprimerlo. Poi ho notato che sto ottenendo questo errore solo quando costruisco per il rilascio. Funziona bene quando si costruisce per il debug. Sono totalmente all'oscuro. Qualcuno può far luce su ciò che sto facendo male.Errore: risorsa prevista di tipo carattere [ResourceType] errore

//Get paddingLeft, paddingRight 
     int[] attrsArray = new int[]{ 
       android.R.attr.paddingLeft, // 0 
       android.R.attr.paddingRight, // 1 
     }; 
     TypedArray ta = context.obtainStyledAttributes(attrs, attrsArray); 
     if (ta == null) return; 
     mPaddingLeft = ta.getDimensionPixelSize(0, 0); 
     mPaddingRight = ta.getDimensionPixelSize(1/*error here*/, 0); 
+3

non so perché questo errore non è mostrata per il primo elemento dell'array, per esempio. Viene mostrato solo per quanto segue. Se creo due array con un elemento ciascuno, non ci sono errori. Qualcuno può spiegarlo? – Sandra

risposta

56

Ho avuto lo stesso problema durante il tentativo di creare un apk firmato. Risolto aggiungendo @SuppressWarnings("ResourceType") per sopprimere l'avviso, ora funziona correttamente.

+3

Oppure puoi usare // ResourceType di noinspection appena prima di quella linea per evitare l'ispezione solo in quella riga di codice – Hugo

5

@StyleableRes int index = 1;

mPaddingRight = ta.getDimensionPixelSize (index, 0);

0
TypedValue outValue = new TypedValue(); 
context.getTheme().resolveAttribute(android.R.attr.paddingLeft, outValue, true); 
int paddingLeft = outValue.data; 

Ripetere la stessa per android.R.attr.paddingRight

Problemi correlati