Resources String from Name, 由字串名得到字串
想要在程式中使用resource 中的字串,可以用以下的方法
String str = getResources().getString(int id);
但是如果我們希望用resources 中的字串名來使用字串,就要先把字串名轉成id
int resId=getResources().getIdentifier(name, "string", getPackageName()))
name 是指在 R.string.XXXX 的 XXXX,
"string"是指 R.string.XXXX 的string, 所以如果是 R.drawable.XXXX,"string", 就要改成"drawable"。
最後是package name, 使用getPackageName(),來得到package name, 或直接打上package name都可以。
有了resId, 現在只要
String str=getResources().getString(resId);
如此即可得到字串。
有人說用 getResources().getIdentifier(name, "string", getPackageName())) 太沒有效率,速度慢。所以可以用另一種方法如下
try {
Class res=R.string.class; // 如果是drawable就變成Class res=R.drawable.class
Field field = res.getField("name");//name要改成字串名
int resId = field.getInt(null);
String str=getResources().getString(resId);
}
catch (Exception e) {
}
速度的確快很多…
String str = getResources().getString(int id);
但是如果我們希望用resources 中的字串名來使用字串,就要先把字串名轉成id
int resId=getResources().getIdentifier(name, "string", getPackageName()))
name 是指在 R.string.XXXX 的 XXXX,
"string"是指 R.string.XXXX 的string, 所以如果是 R.drawable.XXXX,"string", 就要改成"drawable"。
最後是package name, 使用getPackageName(),來得到package name, 或直接打上package name都可以。
有了resId, 現在只要
String str=getResources().getString(resId);
如此即可得到字串。
有人說用 getResources().getIdentifier(name, "string", getPackageName())) 太沒有效率,速度慢。所以可以用另一種方法如下
try {
Class res=R.string.class; // 如果是drawable就變成Class res=R.drawable.class
Field field = res.getField("name");//name要改成字串名
int resId = field.getInt(null);
String str=getResources().getString(resId);
}
catch (Exception e) {
}
速度的確快很多…
留言
張貼留言