Disable Button when Edit Text Fields empty

后端 未结 7 511
栀梦
栀梦 2020-12-31 04:22

I have two text fields and a Button. I want to disable the Button unless both EditText-Fields are not empty. I tried many solutions here at stackoverflow, but they don\'t wo

相关标签:
7条回答
  • 2020-12-31 04:53

    Instead of this

     if(s1.equals("") && s2.equals(""))
        {
            b.setEnabled(false);
        }
    

    try this

     if(s1.isEmpty() || s2.isEmpty())
        {
            b.setEnabled(false);
        }
    

    change all the validating condition from && this to ||

    0 讨论(0)
  • 2020-12-31 04:53

    My way was:

    1. button setEnabled(false)

    2. I used TextWatcher to listen for text change and update status of button in afterTextChanged function

    Here is my code:

    TextWatcher tw = 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) {
            updateSignInButtonState();
        }
    };
    
    public void updateSignInButtonState() {
        btnSubmit.setEnabled(edUsername.getText().length() > 0 &&
                edPassword.getText().length() > 0);
    }
    
    0 讨论(0)
  • 2020-12-31 04:54

    You may resolve this problem a much shorter:

    @Override
    protected void onResume() {
        super.onResume();
        TextWatcher tw = 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) {
               updateSignInButtonState();
            }
        };
    
        editLogin.addTextChangedListener(tw);
        editPassword.addTextChangedListener(tw);
    

    }

    private void updateSignInButtonState() {
        buttonSignIn.setEnabled(editLogin.getText().length() > 0 &&
                                editPassword.getText().length() > 0);
    }
    
    0 讨论(0)
  • 2020-12-31 04:55

    A different way to do this would be

    b.setEnabled(!s1.trim().isEmpty() && !s2.trim().isEmpty());
    
    0 讨论(0)
  • 2020-12-31 04:58

    Your problem is here:

    //set listeners
            editText1.addTextChangedListener(textWatcher);
            editText1.addTextChangedListener(textWatcher);
    

    You are not setting the textWatcher to editText2, so you are always checking the condition if you write inside editText1

    0 讨论(0)
  • 2020-12-31 04:58

    I know this is old, but keep in mind that by simply using .isEmpty() will allow you to only add a space and the button will enable itself.

    Use s1.trim().isEmpty || s2.trim().isEmpty() instead.

    Or, you can do:

    String s1 = editText1.getText().toString().trim() String s2 = editText2.getText().toString().trim()

    then just check for .isEmpty().

    I don't know, it's however you'd want to do it, and this answer is most likely irrelevant anyway but I'd thought I'd just point that out.

    0 讨论(0)
提交回复
热议问题