0

我有一个 EditText,用户在其中输入一个字符串。编辑后,字符串显示在 TextView 中。我创建了一个名为 TextValidator 的自定义类,它实现了 TextWatcher,以满足 addTextChangedListener(TextWatcher watcher) 方法的参数。当我运行它时,当我按下一个字母输入到 editText 时,应用程序崩溃了。

在 MainActivity 中:

EditText editText1 = (EditText)findViewById(R.id.editText1);
editText1.addTextChangedListener(new TextValidator((EditText)findViewById(R.id.editText1)));

在我的 TextValidator 类中:

public class TextValidator extends Activity implements TextWatcher {
    private EditText editText;

    public TextValidator(EditText editText) {
        this.editText = editText;
    }

    public void validate(TextView textView, String text)
    {
        //I want to later check the string for valid format
    }

    final public void afterTextChanged(Editable s) {
        ((EditText)findViewById(R.id.textView1)).setText(editText.getText().toString());
        //validate(textView, text);
    }
4

1 回答 1

2

TextValidator 不扩展 Activity。

解决方案:

public class TextValidator implements TextWatcher {
    private Context mContext;
    private EditText mEditText;
    private TextView mTextView;

    public TextValidator(Context mContext) {
        this.mContext = mContext;
        EditText mEditText = (EditText)mContext.findViewById(R.id.editText1);
        TextView mTextView = (TextView)mContext.findViewById(R.id.textView1);
    }

    public void validate(TextView textView, String text)
    {
        //I want to later check the string for valid format
    }

    final public void afterTextChanged(Editable s) {
        mTextView.setText(mEditText.getText().toString());
        //validate(textView, text);
    }
    ....
于 2012-12-27T19:27:24.463 回答