在Android中,如何针对EditText禁用"登录"按钮?

Dro*_*ner 7 android button android-ui android-edittext android-button

如果EditText为空,则Button必须禁用Login .如果EditText有一些文本,则Button必须启用Login .那么你可以在Instagram登录上看到这个方法.

这两个字段都是空的,登录Button是禁用的.

在此输入图像描述

此密码字段为空,因此仍然登录Button已禁用.

在此输入图像描述

此处用户名和密码字段均不为空,因此登录Button已启用.

在此输入图像描述

如何实现这些步骤?这是我的代码,它不起作用..

EditText et1,et2;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login_check);
    et1 = (EditText) findViewById(R.id.editText1);
    et2 = (EditText) findViewById(R.id.editText2);
    Button b = (Button) findViewById(R.id.button1);

    String s1 = et1.getText().toString();
    String s2 = et2.getText().toString();

    if(s1.equals("")|| s2.equals("")){
        b.setEnabled(false);
    } else {
        b.setEnabled(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

pet*_*tey 25

你还在寻找什么:

private EditText et1,et2;
//  create a textWatcher member
private TextWatcher mTextWatcher = 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) {
    }

    @Override
    public void afterTextChanged(Editable editable) {
        // check Fields For Empty Values
        checkFieldsForEmptyValues();
    }
};

void checkFieldsForEmptyValues(){
    Button b = (Button) findViewById(R.id.button1);

    String s1 = et1.getText().toString();
    String s2 = et2.getText().toString();

    if(s1.equals("")|| s2.equals("")){
        b.setEnabled(false);
    } else {
        b.setEnabled(true);
    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login_check);
    et1 = (EditText) findViewById(R.id.editText1);
    et2 = (EditText) findViewById(R.id.editText2);


    // set listeners
    et1.addTextChangedListener(mTextWatcher);
    et2.addTextChangedListener(mTextWatcher);

    // run once to disable if empty
    checkFieldsForEmptyValues(); 
}
Run Code Online (Sandbox Code Playgroud)


moD*_*Dev 5

您需要实现TextWatcher才能EditText达到结果。

EditText et1, et2;
Button b;

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

    et1 = (EditText) findViewById(R.id.editText1);
    et2 = (EditText) findViewById(R.id.editText2);
    b = (Button) findViewById(R.id.button1);

    checkValidation();

    et1.addTextChangedListener(mWatcher);
    et2.addTextChangedListener(mWatcher);
}

private void checkValidation() {
    // TODO Auto-generated method stub

    if ((TextUtils.isEmpty(et1.getText()))
            || (TextUtils.isEmpty(et2.getText())))
        b.setEnabled(false);
    else
        b.setEnabled(true);

}

TextWatcher mWatcher = new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before,
            int count) {
        // TODO Auto-generated method stub
        checkValidation();
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
        // TODO Auto-generated method stub

    }

    @Override
    public void afterTextChanged(Editable s) {
        // TODO Auto-generated method stub

    }
};
Run Code Online (Sandbox Code Playgroud)