2016-04-16 3 views
0

Ich weiß, diese dumme Frage ist aberandroid Annotation Syntax

Ich habe noch nie android Annotation, es gerade erschienen mit Auto-Vervollständigung in Android-Studio verwendet und ich dachte, es ist eine gute Idee, es zu benutzen, ich bin mir recht?

habe ich meine Forschung und ich lernte, wie man es benutzt mit parameters aber ich fand nichts darüber, wie es zu benutzen mit pair und generic

hier ist mein Code

private Pair<StringRes ,DrawableRes> getRespectiveStingAndDrawableRes(String permission) { 
     if(permission.equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) 
      return Pair.create(R.string.WRITE_EXTERNAL_STORAGE_permision_message,R.drawable.ic_menu_gallery); 
     return null; 
    } 

und diese Fehler aufgetreten

Error:(49, 31) error: incompatible types 
required: Pair<StringRes,DrawableRes> 
found: Pair<Integer,Integer> 

ich versuchte IntegerRes zu verwenden, aber auch nicht funktioniert

Anmerkung: Ich die piar verwendete android.support.v4.util.Pair

+0

Ist 'R.string.bla_bla_bla' nicht' StringRes'? –

+1

Nein, es handelt sich um eine Ganzzahl-ID, die auf eine Zeichenfolgenressource zeigt. StringRes ist eine Annotation-Klasse, keine String-Objekt-Klasse –

Antwort

0

Sie können diese Anmerkungen auf diese Weise verwenden. Sie werden hauptsächlich verwendet, um Parameterwerte auf einen gegebenen Typ zu begrenzen, z. @StringRes erfordert, dass der angegebene Wert int eine gültige Zeichenfolgenressource ist.

Für diese Pair Sie noch Integer zu schreiben, da dies der tatsächliche Variablentyp ist:

private Pair<Integer, Integer> getRespectiveStingAndDrawableRes(String permission) { 
    ... 
} 
0

Ich bin nicht sicher, wie Sie Ihre Frage Anmerkungen bezieht, da Sie eine nicht verwenden, aber die Fehler weist darauf hin, dass R.string und R.drawable beide int Werte und nicht StringRes oder DrawableRes

Dies könnte funktionieren. Hinweis @XRes ist die Anmerkung, es ist kein Klassentyp, wie Sie versuchen, es zu verwenden.

private Pair<Integer , Integer> getRespectiveStingAndDrawableRes(String permission) { 
     if(permission.equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) 
      return Pair.create(@StringRes R.string.WRITE_EXTERNAL_STORAGE_permision_message, @DrawableRes R.drawable.ic_menu_gallery); 
     return null; 
    } 

Und wenn das nicht funktioniert, dann entfernen Sie einfach die beiden @XRes Anmerkungen

+0

Fehler: Anmerkungen sind hier nicht erlaubt (innerhalb der Methode Pair.create) –

+0

Wie gesagt, es könnte funktionieren, was vielleicht nicht bedeutet. Einfach die Annotationen loswerden. Hier ist ein Link, um sie richtig zu benutzen. https://github.com/excilys/androidannotations/wiki/Resources –