Java 检查2个(或更多)编辑文本是否为空

Java 检查2个(或更多)编辑文本是否为空,java,android,android-edittext,listener,Java,Android,Android Edittext,Listener,有两个编辑文本(accName和accMoney)要检查为不为空,以便启用按钮(btnCrAcc) 尝试按照下面的代码执行。但事实上,这并不是我想要的方式。当我更改accMoney字段时,它会同时检查两个编辑文本(但在此之后,我可以将accName更改为“”,并且按钮仍将启用 我认为一个可能的解决方案是为这两个字段设置addTextChangedListener,但它会消耗更多内存?(告诉我:这是一个好选项吗?) 如果有人告诉我如何正确地做到这一点,我会非常感激 我有以下代码: protec

有两个编辑文本(accNameaccMoney)要检查为不为空,以便启用按钮(btnCrAcc

尝试按照下面的代码执行。但事实上,这并不是我想要的方式。当我更改accMoney字段时,它会同时检查两个编辑文本(但在此之后,我可以将accName更改为“”,并且按钮仍将启用

我认为一个可能的解决方案是为这两个字段设置
addTextChangedListener
,但它会消耗更多内存?(告诉我:这是一个好选项吗?)

如果有人告诉我如何正确地做到这一点,我会非常感激

我有以下代码:

  protected void onCreate(Bundle savedInstanceState) {
         //..
         accName = (EditText) findViewById(R.id.txtName);
        accMoney = (EditText) findViewById(R.id.txtMoney);
         accDescr = (EditText) findViewById(R.id.txtDescr);
         accsListView = (ListView) findViewById(R.id.listView);
         //..
        final Button btnCrAcc = (Button) findViewById(R.id.btnCreateAccount);

    accMoney.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        }

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

            btnCrAcc.setEnabled(!accName.getText().toString().trim().isEmpty());
            btnCrAcc.setEnabled(!accMoney.getText().toString().trim().isEmpty()); // check this
        }

        @Override
        public void afterTextChanged(Editable editable) {

        }
    });
}
试试这个:

TextWatcher watcher = new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            btnCrAcc.setEnabled(!accName.getText().toString().trim().isEmpty() && !accMoney.getText().toString().trim().isEmpty());
        }

        @Override
        public void afterTextChanged(Editable editable) {

        }
    };

accMoney.addTextChangedListener(watcher);
accName.addTextChangedListener(watcher;
试试这个:

if(accName.getText().length() == 0 || accMoney.getText().length() == 0) {
    //do your stuff
}
创建一个实现TextWatcher的类:

而不是对两个EditText使用textwatcher:


您可以使用单个
TextWatcher
实例:

TextWatcher myWatcher = new TextWatcher() {
    @Override 
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    } 

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

    @Override 
    public void afterTextChanged(Editable editable) {
        btnCrAcc.setEnabled(!accName.getText().toString().trim().isEmpty() && 
                            !accMoney.getText().toString().trim().isEmpty());
    } 
});

accName.addTextChangedListener(myWatcher);
accMoney.addTextChangedListener(myWatcher);
MyTextWatcher myTextWatcher = new MyTextWatcher();

accName.addTextChangedListener(myTextWatcher);
accMoney.addTextChangedListener(myTextWatcher);
TextWatcher myWatcher = new TextWatcher() {
    @Override 
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    } 

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

    @Override 
    public void afterTextChanged(Editable editable) {
        btnCrAcc.setEnabled(!accName.getText().toString().trim().isEmpty() && 
                            !accMoney.getText().toString().trim().isEmpty());
    } 
});

accName.addTextChangedListener(myWatcher);
accMoney.addTextChangedListener(myWatcher);