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