Как получить значение строкового ресурса в файле констант?

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

Строка помещается в

Приложение/res/values/strings.xml

и имя ресурса, скажем, app_version. теперь я хочу, чтобы эта версия приложения была постоянной строкой в ​​​​другом файле. Любая помощь приветствуется.


person Usama Sarwar    schedule 10.08.2011    source источник


Ответы (3)


In Java: R.string.string_name 
In XML:@string/string_name

R.string.app_version или @string/app_version, взятые из strings.xml, являются вашей константой и всегда будут представлять значение, которое вы ввели в этот файл XML.

person Justin Shield    schedule 10.08.2011
comment
@ Джастин... это было очень просто, но спасибо, что вытащили меня из этого... ;-) - person Usama Sarwar; 10.08.2011
comment
Ну, не совсем. R.string.string_name — это идентификатор (целое число), который ссылается на строку. Сама строка, которую, вероятно, хочет ОП, представляет собой нечто совершенно другое (строка). - person SMBiggs; 18.06.2016

Попробуйте context.getResources().getString(R.string.app_version), где «контекст» — это экземпляр вашей активности или приложения.

Если ваш вопрос действительно касается получения имени версии вашего приложения, есть лучший способ:

String versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;

Таким образом, вы получаете информацию непосредственно из AndroidManifest, и вам не нужно поддерживать ее дважды.

person devconsole    schedule 10.08.2011
comment
Работает, но что, если вам нужна статическая константа final String, которая просто указывает на строку в strings.xml? Компилятор затыкается на статической части. - person SMBiggs; 18.06.2016

Все ответы здесь не актуальны. Это правильный способ сделать это. Лучше использовать

@StringRes

public class AndroidClass{
...
    @StringRes
    private static final int[] TAB_TITLES = new int[]{R.string.tab1, R.string.tab2, R.string.tab_2};

 private final Context mContext;
...


     public CharSequence getString(int position) {
         return mContext.getResources().getString(TAB_TITLES[position]);
     }
}
person Zhar    schedule 15.06.2020