2014-10-14 10 views
6

Während seiner Zeit bei der Antwort here suchen, ich hatte Probleme auf der Linie:Mit "@StyleableRes" annotierte "gateStyledAttributes". Unterdrückt Warnungen

TypedArray ta = obtainStyledAttributes(R.style.MyCustomStyle, attrs); 

Es scheint, dass Android Studio läßt mich nicht in einem int übergeben, die nicht von einer R.styleable Ressource kommen ohne Warnungen erhalten.

Es sagt mir, dass es eine Ressource vom Typ styleable erwartet, die ich annehmen, bedeutet, dass der Code, den ich für Anrufe mit dem @StyleableRes annotation

Expected resource of type styleable

kommentiert worden Was ist die beste Vorgehensweise sein würde um die im R.style. {x} definierten Werte zu lesen? Die akzeptierte Antwort auf den verknüpften Post funktioniert und kompiliert, aber ich weiß nicht, wie die Warnung unterdrückt werden soll. Da es eine Warnung gibt, ist es sicher zu unterdrücken? Wenn das so ist, wie?

+0

Ein 'styleable' ist kein' style' – Blackbelt

+0

@blackbelt korrekt. Deshalb bin ich verwirrt, dass die angenommene (Kopfgeld!) Antwort in der Frage, mit der ich mich verband, einen Stil verwendet und so viele Upvotes hat. –

+0

In der Tat ist es nur eine Warnung, haben Sie Ihren Code ausgeführt? – pskink

Antwort

9

denke ich, der richtige Weg, dies zu unterdrücken:

@SuppressWarnings("ResourceType") 

mir dies angeboten, wenn ich drücke Alt-Enter-Fixes für die Warnung zu bringen und wählen Inspection ‚Constant und Ressourcentyp Mismatches‘ Optionen>Unterdrücken Sie für Klasse (Screenshot im Anhang) enter image description here.

Es funktioniert für mich.

Es ist möglich, dass sich die ID für diese Überprüfung geändert hat, seit dem Code, auf den Sie verwiesen haben, geschrieben wurde; Ich schaute kurz durch die Commit-Protokolle, konnte aber keinen Verweis darauf finden.

+0

Danke für die Antwort. Ich habe diese spezielle Warnung jetzt unterdrückt. Ist es sicher, die Warnung zu stummschalten (ich vermute, es ist eine Warnung aus einem Grund)? –

+0

Sie möchten es vielleicht nicht überall stummschalten. Trotz dieses Fehlers wird ein einfach zu erstellender, jedoch schwer zu diagnostizierender Programmierfehler angezeigt. –

+0

Setzen Sie diese Unterdrückung zu Methode ist genug und sicherer .. keine Notwendigkeit, es zur ganzen Klasse wild zu machen .. –

0

Sie können die Warnmeldung mit @SuppressWarnings("ResourceType") für die Methode unterdrücken, in der das Problem auftritt, oder Sie können einfach //noinspection ResourceType direkt vor dieser Zeile verwenden, um eine Überprüfung nur in dieser Codezeile zu vermeiden.

Verwandte Themen