EditText数组FocusChange

时间:2013-10-17 17:46:27

标签: java android android-view

我有80个EditText字段(cube [i]),并希望在文本字段失去焦点时读取文本字段内的内容。

我可以检测到任何EditTexts(立方体)何时失去焦点,但我无法准确检测到哪一个,我试图找到哪个立方体正在关注。

行“EditText cube =(EditText)v.getClass();”给我一个错误

也许我可以使用View v?

            for (int i = 0; i < cube.length; i++) {

        cube[i].setOnFocusChangeListener(new OnFocusChangeListener() {

            public void onFocusChange(View v, boolean hasFocus) {
                if (!hasFocus) {
                    EditText cube = (EditText) v.getClass();
                    String s = cube.getText().toString();
                    //cubecolor();

                }
            }
        });

    }

    }

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

在创建setText时设置一些标签,如此(伪代码)

EditText edit = new EditText(context);
edit.setTag(Integer.valueOf(i)); // i is within the for loop;

现在在onFocus期间获取标签

    public void onFocusChange(View v, boolean hasFocus) {
            if (!hasFocus) {
                EditText cube = (EditText) v;
                Integer tag = (Integer)cube.getTag();
                //code to sort out which cube based on tag
                String s = cube.getText().toString();
                //cubecolor();

            }
        }

答案 1 :(得分:0)

这很有效,谢谢Dante。

    for (int i = 0; i < cube.length; i++) {
        cube[i].setTag(Integer.valueOf(i)); // give cubes tags
    }

    for (int i = 0; i < cube.length; i++) {

        cube[i].setOnFocusChangeListener(new OnFocusChangeListener() {

            public void onFocusChange(View v, boolean hasFocus) {
                if (!hasFocus) {

                    Integer tag = (Integer) v.getTag();
                    String s = cube[tag].getText().toString();
                                            Log(TAG, " Content" + s);
                    revert_cubecolor(tag);

                }
            }
        });

    }