Короче говоря: я не думаю, что вы можете, но, кажется, есть обходной путь .
Если вы посмотрите на ресурс Android здесь:
http://developer.android.com/guide/topics/resources/string-resource.html
Вы видите, что в разделе «массив» (по крайней мере, строковый массив) «RESOURCE REFERENCE» (как вы получаете из XML) не указывает способ адресации отдельных элементов. Вы даже можете попробовать в своем XML использовать "@ array / yourarrayhere". Я знаю, что во время разработки вы получите первый предмет. Но это бесполезно, если вы хотите использовать, скажем ... второе, конечно.
ОДНАКО, есть трюк, который вы можете сделать. Посмотреть здесь:
Ссылка на строку XML в массиве XML (Android)
Вы можете «обмануть» (не совсем) определение массива, обратившись к независимым строкам ВНУТРИ определения массива. Например, в вашем 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>
Используя это, вы можете использовать «@ string / earth» и «@ string / moon» в своих полях «android: text» и «android: title» XML, и все же вы не потеряете возможность использовать массив определение для любых целей, которые вы намеревались в первую очередь.
Кажется, работает здесь, на моем затмении. Почему бы вам не попытаться сказать нам, если это работает? :-)
name
теги <item> s ... * sigh *strings.xml
но не внес его,values-fr
и массив все еще обновлялся до французской версии. Так неправильно .. но круто это работает!Может быть, это поможет:
Таким образом, вы получаете список массивов в виде строки [], а затем выбираете любой i, some_array [i].
источник
String myPref = preferences.getString(context.getResources().getString(R.string.my_pref), some_array [0]);
где my_pref ранее было установлено какое-то значение some_array [x]Лучшим вариантом было бы просто использовать массив, возвращаемый ресурсом, как массив, что означает:
getResources().getStringArray(R.array.your_array)[position]
Это сокращенный подход вышеупомянутых подходов, но он работает так, как вы хотите. В противном случае Android не обеспечивает прямую индексацию XML для массивов на основе XML.
источник
К сожалению:
Кажется, вы не можете ссылаться на один элемент из массива в values / arrays.xml с XML. Конечно, вы можете в Java, но не XML. Информация об этом отсутствует в справочнике разработчика Android, и я не смог найти ничего другого.
Кажется, вы не можете использовать массив в качестве ключа в макете настроек. Каждый ключ должен быть одним значением со своим собственным именем ключа.
Чего я хочу добиться: я хочу иметь возможность перебрать 17 предпочтений, проверить, отмечен ли пункт, и, если это так, загрузить строку из массива строк для этого имени предпочтения.
Вот код, который я надеялся завершить эту задачу:
Что я сделал:
Я установил одну строку для каждого из элементов и сослался на отдельные строки в. Я использую ссылку на одну строку для заголовков флажка макета настроек и массив для моего цикла.
Чтобы пройти через настройки, я просто назвал ключи, такие как key1, key2, key3 и т. Д. Поскольку вы ссылаетесь на ключ со строкой, у вас есть возможность «построить» имя ключа во время выполнения.
Вот новый код:
источник
Другой способ сделать это - определить массив ресурсов в strings.xml, как показано ниже.
а затем определение массива строк с использованием вышеуказанных ресурсов
Вы можете ссылаться на ту же строку в других xmls, сохраняя DRY нетронутыми. Преимущество, которое я вижу, состоит в том, что с одним изменением значения это повлияет на все ссылки в коде.
источник