如何在android中关注edittext?

时间:2012-01-31 11:43:29

标签: android android-layout android-emulator android-intent android-widget

您好我想获得当前焦点按钮点击的编辑文本,有任何按钮可以执行此操作。

如果活动中有许多编辑文本,或者有一种方法可以识别上次修改哪个edittext。

请建议我使用可用的链接或示例代码。

2 个答案:

答案 0 :(得分:1)

我采用线性布局并在其中添加自定义EditText。

    LayoutInflater li = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);
    for(int i = 0; i < 3; i++) {
        View v = li.inflate(R.layout.addit, null);
        final EditText e = (EditText) v.findViewById(R.id.e1);
        e.addTextChangedListener(new TextWatcher() {

            public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub

            }

            public void beforeTextChanged(CharSequence s, int start,
                    int count, int after) {
                // TODO Auto-generated method stub

            }

            public void onTextChanged(CharSequence s, int start,
                    int before, int count) {
                // TODO Auto-generated method stub

                System.out.println("--change--");
                mEditText = e;
                System.out.println(e.getText().toString());
            }

        });
        edit_ll.addView(v);
    }

这里mEditText是一个全局变量。

您可以在活动中的任何位置访问它。并且可以得到你写的最后一个editText。

答案 1 :(得分:0)

您可以将textWatcher添加到所有EditTexts:

private class CustomTextWatcher implements TextWatcher {
    private EditText mEditText;

    public CustomTextWatcher(EditText e) {
        mEditText = e;
    }

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    public void onTextChanged(CharSequence s, int start, int before, int count) {
    }

    public void afterTextChanged(Editable s) {
    }
}

并且可以为您的类提供一个全局变量,以包含正在编辑的editText引用。