Singkatnya: Saya tidak berpikir Anda bisa, tapi tampaknya ada solusi: .
Jika Anda melihat Sumber Daya Android di sini:
http://developer.android.com/guide/topics/resources/string-resource.html
Anda melihat daripada di bawah bagian array (array string, setidaknya), "REFERENSI SUMBERDAYA" (seperti yang Anda dapatkan dari XML) tidak menentukan cara untuk menangani masing-masing item. Anda bahkan dapat mencoba dalam XML untuk menggunakan "@ array / yourarrayhere". Saya tahu bahwa dalam waktu desain Anda akan mendapatkan item pertama. Tapi itu tidak ada gunanya jika Anda ingin menggunakan, katakanlah ... yang kedua, tentu saja.
NAMUN, ada trik yang bisa Anda lakukan. Lihat disini:
Merujuk string XML dalam Array XML (Android)
Anda dapat "menipu" (tidak benar-benar) definisi array dengan mengarahkan string independen DI DALAM definisi array. Misalnya, di strings.xml Anda:
<string name="earth">Earth</string>
<string name="moon">Moon</string>
<string-array name="system">
<item>@string/earth</item>
<item>@string/moon</item>
</string-array>
Dengan menggunakan ini, Anda dapat menggunakan "@ string / earth" dan "@ string / moon" secara normal di bidang "android: text" dan "android: title" XML Anda, namun Anda tidak akan kehilangan kemampuan untuk menggunakan array definisi untuk tujuan apa pun yang Anda maksudkan sejak awal.
Tampaknya bekerja di sini di Eclipse saya. Mengapa Anda tidak mencoba dan memberi tahu kami jika itu berhasil? :-)
name
tag ke <item> s ... * sigh *strings.xml
tetapi tidak divalues-fr
dan larik masih diperbarui dengan versi Perancis. Sangat salah .. tapi keren itu berhasil!Mungkin ini akan membantu:
Jadi Anda mendapatkan daftar-array sebagai String [] dan kemudian memilih i, some_array [i].
sumber
String myPref = preferences.getString(context.getResources().getString(R.string.my_pref), some_array [0]);
mana my_pref sebelumnya diatur ke beberapa nilai some_array [x]Pilihan yang lebih baik adalah dengan menggunakan array yang dikembalikan sumber daya sebagai array, yang berarti:
getResources().getStringArray(R.array.your_array)[position]
Ini adalah pendekatan pintas dari pendekatan yang disebutkan di atas tetapi melakukan pekerjaan dengan cara yang Anda inginkan. Kalau tidak, android tidak menyediakan pengindeksan XML langsung untuk array berbasis xml.
sumber
Sayangnya:
Tampaknya Anda tidak dapat mereferensikan satu item dari array dalam nilai / arrays.xml dengan XML. Tentu saja Anda bisa di Jawa, tetapi tidak XML. Tidak ada informasi tentang melakukannya di referensi pengembang Android, dan saya tidak dapat menemukan tempat lain.
Tampaknya Anda tidak dapat menggunakan array sebagai kunci dalam tata letak preferensi. Setiap kunci harus bernilai tunggal dengan nama kuncinya sendiri.
Apa yang ingin saya capai: Saya ingin dapat mengulang-ulang 17 preferensi, memeriksa apakah item dicentang, dan jika ya, muat string dari array string untuk nama preferensi itu.
Inilah kode yang saya harapkan akan menyelesaikan tugas ini:
Apa yang saya lakukan:
Saya menetapkan string tunggal untuk setiap item, dan mereferensikan string tunggal di. Saya menggunakan referensi string tunggal untuk judul kotak centang preferensi tata letak, dan array untuk loop saya.
Untuk mengulang melalui preferensi, saya hanya memberi nama kunci seperti key1, key2, key3, dll. Karena Anda merujuk kunci dengan string, Anda memiliki opsi untuk "membangun" nama kunci saat runtime.
Ini kode baru:
sumber
Cara lain untuk melakukannya adalah mendefinisikan array sumber daya di strings.xml seperti di bawah ini.
dan kemudian mendefinisikan array string menggunakan sumber daya di atas
Anda bisa merujuk string yang sama ke xml lain juga menjaga DRY tetap utuh. Keuntungan yang saya lihat adalah, dengan perubahan nilai tunggal itu akan mempengaruhi semua referensi dalam kode.
sumber