2017-12-18 2 views
0

Let vorbei sagen, ich habe 2 ArraysArray Variable Name

Array1 = 1,2,3,4,5 
Array2 = a,b,c,d,e 
String[] array = getResources().getStringArray(R.array.Array1); 

, dass die Arbeit in Ordnung. Aber ich will nicht über den Code erneut verwenden, mit einer anderen Linie

String[] array = getResources().getStringArray(R.array.Array2); 

Wie erhalte ich die folgenden Zeilen, wenn arbeiten ich für Array-Namen

String xxx = Array1; 
String[] array = getResources().getStringArray(R.array.xxx); 

Antwort

2

Sie xxx als Variable deklariert hatte can:

int xxx = R.array.Array1; //change to integer 

String[] array = getResources().getStringArray(xxx); //pass the whole id 

Anstatt nur den Namen der Ressource zu übergeben, übergeben Sie die ganze ID (als Ganzzahl).

Wenn Sie immer noch den Namen als String passieren, können Sie:

String xxx = "Array1"; 
int resourceId = getResources().getIdentifier(xxx, "array", getPackageName()); 
String[] array = getResources().getStringArray(resourceId); 

Referenz der zweiten Option: https://stackoverflow.com/a/3476447/9038584

+0

Ich verstehe Ihren Punkt ID als Integer übergeben. Die Variable xxx ist jedoch eine Zeichenfolge, die aus einer anderen Methode deklariert wurde. 'int xxx = R.array.Array1; // ändere die Ganzzahl ' Das funktioniert nicht – Anthony

+0

Ich möchte immer noch den Wert mit dem String-Namen übergeben – Anthony

+0

Ich habe meine Antwort aktualisiert. Diese Frage gab es bereits, siehe meinen Link zu meiner zweiten Antwortoption. –

2

Eine einfache util Methode in Ihrer Tätigkeit oder Dienstleistung:

String[] getArray(int id) { 
    return getResources().getStringArray(id); 
} 

Verbrauch:

String[] array1 = getArray(R.array.array1);