2016-06-24 8 views
3

Ich bekomme "Sollte gelöste Farbe statt Ressource ID hier übergeben".Android Fusselfehler mit?: Bedingter Operator Operator

Wenn ich die?: Entfernen und Farbe als eine definiert, hat Lint keine Probleme.

Kann ich das beheben, ohne nützliche Warnungen zu unterdrücken? Wenn nicht, welche werde ich unterdrücken?

Bitte keine Ad-hoc-Lösungen für dieses Problem speziell. Ich frage nach?: Verwirrende Flusen.

[bearbeiten] Also, keine Lösung für "?: Verwirrende Lint", im Allgemeinen?

+0

Verwendung supress Warnung nur für diese Aussage –

+0

Sie können auch @colores mit Ihrer Methode annotieren –

+1

Setzen Sie den Cursor auf die Warnung. Drücken Sie Alt + Eingabe, um verschiedene Optionen anzuzeigen, einschließlich Lösungen und Warnungen unterdrücken. – Joshua

Antwort

1

Sie @ColorInt Anmerkung verwenden diese Methode mit Anmerkungen versehen, um Flusen pflegt eine Warnung werfen

0

Ihren Code wie folgt ändern:

int color; 
if (colorString != null) { 
    color = someIntReturningMethod(colorString); 
} else { 
    color = R.color.defaultForWhatever; 
} 
int color = ContextCompat.getColor(c, color); 

someIntReturningMethod ist eine aufgelöste Android Farbe nicht zurück. Wahrscheinlich gibt es nur eine Farbe aus res/colors.xml, die später mit Verfahren gelöst werden müssen:
ContextCompat.getColor(Context context, int color)

+0

Sowohl eine "aufgelöste Farbe" und eine "Ressource-ID" sind ints. Und ja, es ist ein ARGB. – kaay