Kurz gesagt: Ich glaube nicht, dass Sie das können, aber es scheint eine Problemumgehung zu geben : .
Wenn Sie sich die Android-Ressource hier ansehen:
http://developer.android.com/guide/topics/resources/string-resource.html
Sie sehen als unter dem Array-Abschnitt (mindestens String-Array), dass die "RESOURCE REFERENCE" (wie Sie aus einem XML erhalten) keine Möglichkeit angibt, die einzelnen Elemente zu adressieren. Sie können sogar in Ihrem XML versuchen, "@ array / yourarrayhere" zu verwenden. Ich weiß, dass Sie in der Entwurfszeit den ersten Artikel erhalten. Aber das nützt nichts, wenn Sie es verwenden möchten, sagen wir ... das zweite natürlich.
Es gibt jedoch einen Trick, den Sie tun können. Siehe hier:
Referenzieren einer XML-Zeichenfolge in einem XML-Array (Android)
Sie können die Array-Definition (nicht wirklich) "betrügen", indem Sie unabhängige Zeichenfolgen IN der Definition des Arrays adressieren. Zum Beispiel in Ihrer Datei strings.xml:
<string name="earth">Earth</string>
<string name="moon">Moon</string>
<string-array name="system">
<item>@string/earth</item>
<item>@string/moon</item>
</string-array>
Auf diese Weise können Sie "@ string / earth" und "@ string / moon" normalerweise in Ihren XML-Feldern "android: text" und "android: title" verwenden, ohne die Fähigkeit zu verlieren, das Array zu verwenden Definition für jeden Zweck, den Sie ursprünglich beabsichtigt haben.
Scheint hier an meiner Eclipse zu arbeiten. Warum versuchst du nicht, uns zu sagen, ob es funktioniert? :-)
name
<item> s Tags geben könnten ... * seufz *strings.xml
, aber nicht invalues-fr
und das Array wurde immer noch mit der französischen Version aktualisiert. Also falsch .. aber cool es funktioniert!Vielleicht würde das helfen:
Sie erhalten also die Array-Liste als String [] und wählen dann ein beliebiges i, some_array [i].
quelle
String myPref = preferences.getString(context.getResources().getString(R.string.my_pref), some_array [0]);
wobei my_pref zuvor auf einen Wert festgelegt war some_array [x]Die bessere Option wäre, einfach das zurückgegebene Ressourcenarray als Array zu verwenden, was bedeutet:
getResources().getStringArray(R.array.your_array)[position]
Dies ist ein Shortcut-Ansatz der oben genannten Ansätze, erledigt die Arbeit jedoch in der von Ihnen gewünschten Weise. Andernfalls bietet Android keine direkte XML-Indizierung für XML-basierte Arrays.
quelle
Unglücklicherweise:
Es scheint, dass Sie nicht ein einzelnes Element aus einem Array in values / arrays.xml mit XML referenzieren können. Natürlich können Sie in Java, aber nicht in XML. Es gibt keine Informationen dazu in der Android-Entwicklerreferenz, und ich konnte nirgendwo anders finden.
Es scheint, dass Sie ein Array nicht als Schlüssel im Einstellungslayout verwenden können. Jeder Schlüssel muss ein einzelner Wert mit einem eigenen Schlüsselnamen sein.
Was ich erreichen möchte: Ich möchte in der Lage sein, die 17 Einstellungen zu durchlaufen, zu überprüfen, ob das Element aktiviert ist, und, falls dies der Fall ist, die Zeichenfolge aus dem Zeichenfolgenarray für diesen Voreinstellungsnamen zu laden.
Hier ist der Code, von dem ich gehofft hatte, dass er diese Aufgabe erfüllen würde:
Was ich getan habe:
Ich habe für jedes Element eine einzelne Zeichenfolge festgelegt und auf die einzelnen Zeichenfolgen in der verwiesen. Ich verwende die Referenz für eine einzelne Zeichenfolge für die Titel der Kontrollkästchen für das Layout der Einstellungen und das Array für meine Schleife.
Um die Einstellungen zu durchlaufen, habe ich nur die Schlüssel wie Schlüssel1, Schlüssel2, Schlüssel3 usw. benannt. Da Sie einen Schlüssel mit einer Zeichenfolge referenzieren, haben Sie die Möglichkeit, den Schlüsselnamen zur Laufzeit zu "erstellen".
Hier ist der neue Code:
quelle
Eine andere Möglichkeit besteht darin, ein Ressourcenarray in der Datei strings.xml wie unten definiert zu definieren.
und dann Definieren eines String-Arrays unter Verwendung der oben genannten Ressourcen
Sie können dieselbe Zeichenfolge auch in andere XML-Dateien verweisen, wobei DRY intakt bleibt. Der Vorteil, den ich sehe, ist, dass mit einer einzigen Wertänderung alle Referenzen im Code beeinflusst werden.
quelle