Доступ к имени ресурса программно

У меня много массивов строк в моих файлах ресурсов, и я хочу получить доступ к ним программно в зависимости от ввода пользователем.

int c = Getter.getCurrentNumber(); String[] info = getResources().getStringArray(R.array.n_<c>); 

Поэтому, если c == 12, информация должна быть строковым массивом с именем «n_12». Есть ли способ сделать это и избегать делать оператор switch с сотнями случаев?

благодаря

Solutions Collecting From Web of "Доступ к имени ресурса программно"

Вы можете получить идентификатор ресурса таким образом

 int c = Getter.getCurrentNumber(); String resource = "n_" + c; int id = getResources().getIdentifier(resource, "array", "com.your.project"); 

Тогда просто используйте этот идентификатор

 String[] info = getResources().getStringArray(id); 

Посмотрите здесь еще один пример на getResources().getIdentifier() .

Если вы хотите получить ресурс по имени (программно), и вы не знаете, как обращаться к ресурсу по имени (но вы знаете, как получить к нему доступ R.), вы можете сделать это:

  • Сначала напечатайте точное имя ресурса, например:

Log.d("", context.getResources().getResourceName(R.id.whichYouAlreadyKnow) );

(Примечание: R.id.whichYouAlreadyKnow может быть R.string. * R.drawable. * И т. Д.)
Теперь вы знаете точное имя ресурса

  • Возьмите напечатанное имя и используйте его как есть:

int id = getResources().getIdentifier(resource_name_that_printed_above, null, null);

ура