两个EditText可以使用[TextWatcher for button disable control]吗?

时间:2014-08-25 07:18:47

标签: java android

我在下面使用此代码,禁用我的按钮,直到第一个输入框收到一些数字。 问题是当我在第二次输入接收号码之前按下按钮,然后应用程序崩溃。

第一个输入var是firstEdittext,第二个是secondEditText

firstEditText.addTextChangedListener(new TextWatcher() {

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

        }

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

            Btn.setEnabled(!(firstEditText.getText().toString().trim().isEmpty());


        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });
}

是否可以将这个TextWatcher用于两者? 或者我需要使用另一种方法来禁用我的按钮

1 个答案:

答案 0 :(得分:1)

尝试解析secondEditText中的空文本会导致错误。在这种情况下,您需要将TextWatcher设置为EditText s。

您可以通过在类中定义命名的TextWatcher来设置,然后将EditText设置为使用它。您还需要修复检查条件以启用按钮。

内部onCreate()

TextWatcher tw = new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        Btn.setEnabled(!TextUtils.isEmpty(firstEditText.getText()) && !TextUtils.isEmpty(secondEditText.getText()));
    }

    @Override
    public void afterTextChanged(Editable s) {

    }
};

firstEditText.addTextChangedListener(tw);
secondEditText.addTextChangedListener(tw);