可能重复:
动态资源加载 Android
在 Android 中,我可以使用String s = getString(R.string.keyName)
. 但是我的数据库中有一个类别列表,每个类别都有一个名称。如何获取该类别名称,然后基于它加载适当的字符串资源,以便它可以用于本地化?
基本上,我需要keyName
动态;我自己的字符串变量。这可能吗?谢谢。
可能重复:
动态资源加载 Android
在 Android 中,我可以使用String s = getString(R.string.keyName)
. 但是我的数据库中有一个类别列表,每个类别都有一个名称。如何获取该类别名称,然后基于它加载适当的字符串资源,以便它可以用于本地化?
基本上,我需要keyName
动态;我自己的字符串变量。这可能吗?谢谢。
由于您的资源不能是动态的,您可以使用如下 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
您可以使用 Java 反射将字符串转换为资源 ID。如果您事先知道它是一个字符串,例如 R.string.theName,并且您有一个“theName”的键名,那么您只需要对“your.package.com.R.string”(其中“your. package.com" 是 AndroidManifest.xml 中定义的包名) 来查找类,然后使用反射从中获取 "theName" 静态成员。您收到的值可以传递给 getString() 方法。