15

可能重复:
动态资源加载 Android

在 Android 中,我可以使用String s = getString(R.string.keyName). 但是我的数据库中有一个类别列表,每个类别都有一个名称。如何获取该类别名称,然后基于它加载适当的字符串资源,以便它可以用于本地化?

基本上,我需要keyName动态;我自己的字符串变量。这可能吗?谢谢。

4

2 回答 2

11

由于您的资源不能是动态的,您可以使用如下 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

于 2011-05-27T21:34:37.040 回答
4

您可以使用 Java 反射将字符串转换为资源 ID。如果您事先知道它是一个字符串,例如 R.string.theName,并且您有一个“theName”的键名,那么您只需要对“your.package.com.R.string”(其中“your. package.com" 是 AndroidManifest.xml 中定义的包名) 来查找类,然后使用反射从中获取 "theName" 静态成员。您收到的值可以传递给 getString() 方法。

于 2011-05-28T01:31:09.687 回答