Android: Как получить строку из ресурсов, используя ее имя?

Отражение в основном связано с тем, что компилятор решил оставить в виде следов кода, который может запросить код выполнения. C ++ славится тем, что не платит за то, что вы не используете; потому что большинство людей не используют / не хотят отражения, компилятор C ++ избегает затрат, не записывая ничего .

Итак, C ++ не дает отражения, и это не легко «имитировать» себя как общее правило, как отмечали другие ответы.

В разделе «другие методы», если у вас нет языка с отражением, получите инструмент, который может извлечь информацию, которую вы хотите во время компиляции.

Наш DMS Software Reengineering Toolkit - это обобщенная технология компилятора, параметризованная явными определениями langauge. Он имеет определения langauge для C, C ++, Java, COBOL, PHP, ...

Для версий C, C ++, Java и COBOL он обеспечивает полный доступ к деревьям синтаксического анализа и информации таблицы символов. Эта информация таблицы символов включает в себя данные, которые вы, скорее всего, захотите от «отражения». Если вы хотите перечислить некоторый набор полей или методов и сделать что-то с ними, DMS может использоваться для преобразования кода в соответствии с тем, что вы находите в таблицах символов произвольным образом.

495
задан Sandeep Yohans 30 November 2017 в 08:25
поделиться

2 ответа

Можно попробовать это в Действии:

getResources().getString(R.string.your string name);

В других ситуациях как фрагменты... используйте

getContext().getResources().getString(R.string.your string name);
1
ответ дан 22 November 2019 в 22:27
поделиться

Если Вы wannt получаете его в действии или fragmnet, то:

getContext().getResources().getString(R.string.string_name);

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

getApplicationContext().getResources().getString(R.string.string_name);
0
ответ дан 22 November 2019 в 22:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: