android:我可以通过它的文本查找视图吗?

时间:2014-02-28 20:49:28

标签: android

在我的程序中,我有动态按钮,每个按钮代表一个字母,我需要找到一个按钮 有一封特定的信件。由于按钮的文本不时变化,我不能使用findViewById方法,而是我需要一种通过文本查找视图的方法。有吗?

如果没有,假设有我正在搜索的字母的按钮有id = B12,我可以在程序中得到12号。如何将12号转换为R.id.B12?

1 个答案:

答案 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);

希望它有帮助!

问候!