Доступ к имени ресурса программно
У меня много массивов строк в моих файлах ресурсов, и я хочу получить к ним доступ программно в зависимости от ввода пользователем.
int c = Getter.getCurrentNumber();
String[] info = getResources().getStringArray(R.array.n_<c>);
Итак, если c == 12, информация должна быть строковым массивом с именем "n_12".
Есть ли способ сделать это и избегать делать оператор switch с сотнями случаев?
Спасибо
Ответы
Ответ 1
Вы можете получить идентификатор ресурса таким образом
int c = Getter.getCurrentNumber();
String resource = "n_" + c;
int id = getResources().getIdentifier(resource, "array", "com.your.project");
Затем просто используйте этот id
String[] info = getResources().getStringArray(id);
Посмотрите здесь для другого примера на getResources().getIdentifier()
.
Ответ 2
Если вы хотите получить ресурс по имени (программно), и вы не знаете, как обращаться к ресурсу по имени (но вы знаете, как получить к нему доступ с помощью 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);
Приветствия