Получить строку из Strings.xml переменной

Я хочу получить строку из strings.xml. Я знаю, как это сделать. Но моя проблема – это что-то еще: у меня есть переменная String, которая изменяется каждый раз, и каждый раз, когда она изменяется, я хочу посмотреть на strings.xml и проверить, существует ли эта переменная String в Strings.xml, а затем получить текст.

например:

String title="sample title" \\ which changes String city= "sample city" String s = getResources().getString(R.string.title); 

В третьей строке: title – это String, и нет никакого названия с названием String в Strings.xml, как я могу это сделать? пожалуйста помогите

Насколько я могу судить, вы можете использовать public int getIdentifier (String name, String defType, String defPackage) . Однако его использование не рекомендуется.

Чтобы использовать его (я этого не делал, но однажды прочитал об этом методе), вам, вероятно, понадобится:

 int identifier = getResources().getIdentifier ("title","string","your.package.name.here"); if (identifier!=0){ s=getResources().getString(identifier); } else{ s="";//or null or whatever } 

Одна вещь, которую вы могли бы сделать, чтобы получить строки из динамических ключей, состоит из 2 строковых массивов и помещает их в HashMap.

arrays.xml:

 <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="title_keys"> <item>title1</item> <item>title2</item> <item>title3</item> </string-array> <string-array name="title_values"> <item>Real Title 1</item> <item>Real Title 2</item> <item>Real Title 3</item> </string-array> </resources> 

И в вашем коде:

 String[] titleKeys = getResources().getStringArray(R.array.title_keys); String[] titleValues = getResources().getStringArray(R.array.title_values); HashMap<String, String> titles = new HashMap<String, String>(); for(int i = 0; i < titleKeys.length; i++) { titles.put(titleKeys[i], titleValues[i]); } 

Наконец, чтобы получить заголовки с динамического ключа:

 titles.get(titleFromSomewhere); 

Вы бы этого не сделали. Вы используете strings.xml для постоянных строк. То, что вы хотите сделать, – одна из двух вещей.

1) Вы хотите, чтобы строка была постоянной, но одна из нескольких опций (например, один элемент в списке стран). В этом случае поместите все параметры в strings.xml и удерживайте ту, которую вы сейчас используете в int. Когда вам нужно получить фактическую строку, используйте getString ().

2) Это действительно может быть любая строка (например, имя пользователя, введенное пользователем). В этом случае он вообще не находится в файле strings.xml, вы просто используете переменную String.

Этого не может быть сделано, ресурсы преобразуются в уникальные ints в R.java, и они используются для поиска ваших реальных ресурсов строки.

Так что R.string.title на самом деле что-то вроде 0x78E84A34 .

Вы можете написать свой собственный класс, который управляет строками для вас, используя HashMap<String,String> для поиска полных строк для более коротких «ключевых» строк.