R.string; get string from dynamic key name [duplicate]

喜你入骨 提交于 2019-12-06 18:31:24

问题


Possible Duplicate:
Dynamic Resource Loading Android

In Android, I can load a string from the resources with String s = getString(R.string.keyName). But I have a list of categories in my database, each one which has a name. How can I take that category name and then load the appropriate string resource based on it, so that it will work for localization?

Basically, I need to have the keyName be dynamic; my own String variable. Is this possible? Thanks.


回答1:


As your resources cannot be dynamically, you could use a switch statement like:

String name = "";
switch (row.getNameKey()) {
case keyName1:
    name = getString(R.string.keyName1);
    break;
case keyName2:
    name = ...
    ...
}

Another approach woould be the getIdentifier method: http://developer.android.com/reference/android/content/res/Resources.html#getIdentifier%28java.lang.String,%20java.lang.String,%20java.lang.String%29

and see: Android: Accessing string.xml using variable name




回答2:


You can use Java Reflection to turn the string into the resource ID. If you know in advance that it's a string, say R.string.theName, and you have a keyname of "theName", you just need to use reflection on "your.package.com.R.string" (where "your.package.com" is the package name defined in AndroidManifest.xml) to find the class, then use reflection to get the "theName" static member from it. The value you receive can be passed into the getString() method.



来源:https://stackoverflow.com/questions/6157887/r-string-get-string-from-dynamic-key-name

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!