R.string; 从dynamic密钥名称获取string

可能重复:
dynamic资源加载Android

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

基本上,我需要keyName是dynamic的; 我自己的stringvariables。 这可能吗? 谢谢。

Related of "R.string; 从dynamic密钥名称获取string"

由于你的资源不能dynamic的,你可以使用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。string29%

并参阅: Android:使用variables名称访问string.xml

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