onTextChanged在第一次运行后冻结

时间:2014-01-06 08:17:02

标签: android

我在布局上有两个EditText,我想在第一次更改时只需将符号添加到第二个edittext

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.

    etInput = (EditText) findViewById(R.id.etInput);
    etOutput = (EditText) findViewById(R.id.etOutput);

    etInput.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {

            etOutput.append(charSequence);
        }

        @Override
        public void afterTextChanged(Editable editable) {

        }
    });

但是它在第一次运行后冻结了。例如,我输入“h”字母。它被添加到第二个edittext中。但是当我试图输入其他符号时,没有任何反应。

我的错误的logcat在这里:http://pastebin.com/p2qizUU0

2 个答案:

答案 0 :(得分:0)

不要直接添加到EditText。使用可编辑的。

etInput.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {

    }

    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {

        etOutput.append(charSequence);
        Editable edtOutput = etOutput.getText();
        edtOutput.clear();
        edtOutput.insert(0,charSequence);
    }

    @Override
    public void afterTextChanged(Editable editable) {

    }
});

答案 1 :(得分:0)

在onTextChanged中你可以这样做:

String str = etOutput.getText().toString();
str+=charSequence.toString();
etOutput.settext(str);

直接附加到edittext我认为是问题。