2016-03-28 6 views
27

Werfen Sie einen Blick auf dieses Code-Snippet. Ich bekomme einen Fehler mit der letzten Zeile, weil ich einen 'Index' anstelle einer Ressource übergebe. Ich dachte, es wäre ein Flusenproblem und versuchte es zu unterdrücken. Dann bemerkte ich, dass ich diesen Fehler nur bekomme, wenn ich für die Veröffentlichung baue. Es funktioniert gut beim Debugging. Ich bin total ahnungslos. Kann jemand etwas Licht in das werfen, was ich falsch mache?Fehler: Erwartete Ressource vom Typ styleable [ResourceType] Fehler

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

Ich weiß nicht, warum dieser Fehler nicht für das erste Element in der Anordnung gezeigt wird, zum Beispiel. Es wird nur für Folgendes angezeigt. Wenn ich zwei Arrays mit jeweils einem Element erstelle, gibt es keinen Fehler. Kann jemand das erklären? – Sandra

Antwort

56

Ich hatte das gleiche Problem beim Versuch, eine signierte apk zu bauen. Gelöst, indem Sie @SuppressWarnings("ResourceType") hinzufügen, um die Warnung zu unterdrücken, jetzt funktioniert es gut.

+3

Oder Sie können einfach // noinspection ResourceType direkt vor dieser Zeile verwenden, um eine Überprüfung nur in dieser Codezeile zu vermeiden – 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; 

Wiederholen Sie das gleiche für android.R.attr.paddingRight

Verwandte Themen