在我的程序中,我有动态按钮,每个按钮代表一个字母,我需要找到一个按钮 有一封特定的信件。由于按钮的文本不时变化,我不能使用findViewById方法,而是我需要一种通过文本查找视图的方法。有吗?
如果没有,假设有我正在搜索的字母的按钮有id = B12,我可以在程序中得到12号。如何将12号转换为R.id.B12?
答案 0 :(得分:3)
我认为您正在寻找“按名称查找资源”功能
String mButtonName = "button" + 12;
int resID = getResources().getIdentifier(mButtonName , "id", getPackageName());
这就是你从字符串中获取int(id)的方式,但是你可以使用反射来做同样的事情,这应该更快。
public static int getId(String resourceName, Class<?> c) {
try {
Field idField = c.getDeclaredField(resourceName);
return idField.getInt(idField);
} catch (Exception e) {
throw new RuntimeException("No resource ID found for: "
+ variableName + " / " + c, e);
}
}
你这样使用它:
getId("button" + 12, R.id.class);
希望它有帮助!
问候!