我有一段丑陋的代码片段:
if (name.equals("video"))
getString(R.string.video);
else if (name.equals("music"))
getString(R.string.music)
else if (name.equals("picture"))
getString(R.string.picture);
else if (name.equals("text"))
getString(R.string.text);
else if (name.equals("apk"))
getString(R.string.apk);
是否可以简化为getString(R.string.#{ name })
答案 0 :(得分:4)
您可以按名称获取标识符:
int id = getResources().getIdentifier(name, "string", getPackageName());
String str = getResources().getString(id);
<击> 唯一的问题:
else if (name.equals("text"))
getString(R.string.picture);
您可以在获取标识符之前进行if语句检查。
答案 1 :(得分:3)
您可以创建一个类似于
的Map<String, String>
填充
Map<String, String> MAP = new HashMap<String, String>();
MAP.put("video", R.string.video);
MAP.put("music", R.string.music);
// ...and so on
if (MAP.containsKey(name)) {
getString(MAP.get(name));
}
答案 2 :(得分:1)
您可以使用反射api,类似这样的
Field f = R.string.getClass().getDeclaredField("text");
getString(f.get(String.class));