R.string;从动态密钥名称中获取字符串

时间:2011-05-27 21:29:00

标签: android resources getstring

  

可能重复:
  Dynamic Resource Loading Android

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

基本上,我需要keyName是动态的;我自己的String变量。这可能吗?感谢。

2 个答案:

答案 0 :(得分:9)

由于您的资源不能动态,您可以使用如下的开关语句:

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.String%29

并查看:Android: Accessing string.xml using variable name

答案 1 :(得分:4)

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