Индексирование через строковые ресурсы Android - PullRequest
2 голосов
/ 30 мая 2010

ОК, у меня есть код, позволяющий мне индексировать строковые ресурсы. Теперь, как я могу получить значение определенного элемента ресурса, не зная его имени?

Вот цикл индекса:

Field[] fLst = R.string.class.getFields();

for(Field f : fLst){

  Log.i(dbgTag, "Field Entry: R.string." + f.getName());

}

Спасибо за ваши усилия ...

1 Ответ

2 голосов
/ 30 мая 2010

Во-первых, вы знаете название ресурса. Вы даже помещаете это в свой Log звонок. Таким образом, одним из вариантов будет использование getIdentifier() на Resources объекте (обычно получаемый путем вызова getResources() на вашем Activity или другом Context).

Или, если у вас есть объект Field, позвоните f.getInt(R.string.class).

В любом случае (getIdentifier() или getInt()) теперь у вас есть числовой идентификатор ресурса, после чего вы можете вызвать getString() на вашем Activity, чтобы получить фактическое значение String.

Использование отражения - напрямую или через getIdentifier() - будет медленным. Пожалуйста, избегайте подхода, который вы пробуете, где это возможно. Если вам абсолютно необходимо использовать рефлексию, обязательно кешируйте свои результаты, чтобы вам не приходилось повторять одни и те же поиски.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...