2016-06-10 4 views
1

В Рез/папку У меня есть многоязычные файлы XML, один для арабского и другого английского:Android, как получить значение Resouce XML из Resouce идентификатору с помощью Java

<string name="ram"/>ramallah<string> 
<string name="nablus"/>Nablus<string> 
<string name="jenin"/>Jenin<string> 

<string name="ram"/>رام الله<string> 
<string name="nablus"/>نابلس<string> 
<string name="jenin"/>جنين<string> 

Я определяю имена, как:

int[] names= {R.string.ram, R.string.nablus, R.string.jenin} 

Я храню эти значения в базе данных. Когда я выбираю данные, у меня есть значения, такие как 2131099699, 2131099623 и 21310991231. Как я могу сопоставить эти числа с именами в XML? И как я могу получить значение ресурса, такое как ramallah, Nablus и Jenin из этих целых значений?

+0

Почему вы не хранить имена (текст) вместо значений ресурса int? – Sanf0rd

+0

, но если вы хотите поддерживать 'multilanguage' в своем приложении, это ** не ** правильный путь. – Hosseini

ответ

0

Я согласен с другие ответы, которые вы должны использовать getString (/ * ваш id здесь * /).

Для поддержки различных языков, вам просто нужно создать несколько файлов ресурсов со строками:

(В Adroid Studio),

  1. Щелкните правой кнопкой мыши на Рез/значения папки
  2. New -> Значения файл ресурсов имя
  3. файл: strings.xml
  4. Добавить Locale отборочные
  5. Выберите свой участ guage

Android автоматически выберет соответствующий файл для локали пользователя.

+0

, но моя проблема в том, что я знаю только целые значения, эти целочисленные значения, автоматически генерируемые java, когда я храню int [] names = {R.string.ram, R.string.nablus, R.string.jenin}, я сохраняю целочисленное значение в базе данных, поэтому в базе данных у меня есть имя 2131099699, 2131099623, 21310991231 , я хочу получить связанное имя из xml getvalue (2131099699) –

+0

Значит, вы не хотите значения, но хотите ли вы имя ресурса? Так что не «рамаллах», а «баран»? – maccaroo

+0

Я хочу значение таких строк, как {Рамаллах, Наблус, Дженин}, я знаю только цифры 2131099699, 2131099623, 21310991231 ,, из этих целых чисел, как вернуть или получить Ramallah, nablus, jenin –

1

Вместо сохранения идентификаторов ресурсов таким образом, вы можете сохранить в базу данных имя ресурса:

String[] names = {"ram", "nablus", "jenin"}; 

Затем вы можете получить доступ к значению ресурса таким образом:

int stringId = context.getResources().getIdentifier(nameStored, "string", context.getPackageName()); 
String stringValue = "default string"; 
if (stringId != 0) { 
    stringValue = context.getResources().getString(stringId); 
} 
+0

Это должно было быть принято как ответ. – Talha

+0

Я знаю только целочисленные значения и не знаю идентификатор, как эти значения 2131099699, 2131099623, 21310991231, как передать эти значения в R.string –

+0

Я обновил ответ, проверьте, нужно ли это то, что вам нужно –

0

Я решить мою проблему хранения в БД ИМЕНА как

String[] Names = {this.getResources().getString(R.string.ram), 
this.getResources().getString(R.string.nablus), 
this.getResources().getString(R.string.jenin)} 

этим путем, я продолжаю с использованием нескольких языков с одной базой данных и одной таблицы

Смежные вопросы