R.string; Получить строку из динамического имени ключа

Возможный дубликат:
Динамическая загрузка ресурсов Android

В Android я могу загрузить строку из ресурсов с помощью String s = getString(R.string.keyName) . Но у меня есть список категорий в моей базе данных, каждый из которых имеет имя. Как я могу взять это название категории, а затем загрузить на него соответствующий строковый ресурс, чтобы он работал для локализации?

В принципе, мне нужно, чтобы keyName был динамическим; Моя собственная переменная String. Это возможно? Благодарю.

Поскольку ваши ресурсы не могут быть динамически, вы можете использовать оператор switch, например:

 String name = ""; switch (row.getNameKey()) { case keyName1: name = getString(R.string.keyName1); break; case keyName2: name = ... ... } 

Другим подходом может быть метод getIdentifier: http://developer.android.com/reference/android/content/res/Resources.html#getIdentifier%28java.lang.String,%20java.lang.String,%20java.lang. Строка% 29

И см.: Android: доступ к string.xml с использованием имени переменной

Вы можете использовать Java Reflection, чтобы превратить строку в идентификатор ресурса. Если вы заранее знаете, что это строка, скажем R.string.theName, и у вас есть ключевое имя «theName», вам просто нужно использовать отражение на «your.package.com.R.string» (где «ваш». Package.com "- это имя пакета, определенное в AndroidManifest.xml), чтобы найти класс, а затем использовать отражение, чтобы получить от него статический член« theName ». Полученное вами значение может быть передано в метод getString ().