android - 一旦所有 EditText 字段不为空,启用按钮

标签 android android-edittext

我有九个 EditText 字段,我正在使用 TextWatcher,我希望开始工作的是,如果所有九个 EditText 字段都被填充,则启用按钮,如果不是禁用,

我在 OnCreate 中禁用了按钮,所以当程序第一次运行时按钮被禁用但是一旦我在一个编辑文本字段中输入一个数字按钮就会启用,即使其他八个字段为空,也一旦我删除all 来自所有字段的文本按钮仍处于启用状态。

EditText T1, T2, T3, T4, T5, T6, T7, T8, T9;
//    Button buttonClear;
Button ButtonScore;


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

    T1 = (EditText) findViewById(R.id.editText2);
    T2 = (EditText) findViewById(R.id.editText3);
    T3 = (EditText) findViewById(R.id.editText4);
    T4 = (EditText) findViewById(R.id.editText5);
    T5 = (EditText) findViewById(R.id.editText6);
    T6 = (EditText) findViewById(R.id.editText7);
    T7 = (EditText) findViewById(R.id.editText8);
    T8 = (EditText) findViewById(R.id.editText9);
    T9 = (EditText) findViewById(R.id.editText10);
    ButtonScore = (Button) findViewById(R.id.buttonScore);
    ButtonScore.setEnabled(false);

    T1.addTextChangedListener(watcher);
    T2.addTextChangedListener(watcher);
    T3.addTextChangedListener(watcher);
    T4.addTextChangedListener(watcher);
    T5.addTextChangedListener(watcher);
    T6.addTextChangedListener(watcher);
    T7.addTextChangedListener(watcher);
    T8.addTextChangedListener(watcher);
    T9.addTextChangedListener(watcher);

    //updateButtonScore();
}

private final TextWatcher watcher = 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)
    {}
    @Override
    public void afterTextChanged(Editable s) {
        if (T1.getText().toString().length() == 0 && T2.getText().toString().length() == 0 &&
                T3.getText().toString().length() == 0 && T4.getText().toString().length() == 0 &&
                T5.toString().trim().length() == 0 && T6.getText().toString().length() == 0 &&
                T7.getText().toString().length() == 0 && T8.getText().toString().length() == 0 &&
                T9.getText().toString().length() == 0) {
            ButtonScore.setEnabled(false);
        } else {
            ButtonScore.setEnabled(true);
        }
    }
};

最佳答案

“你的逻辑有问题”

如果 EditText 中的任何一个字段为空,您希望禁用该按钮,因此您应该使用 OR (||) 而不是 AND (&&)。如果您使用 AND,则只有当 所有 EditText同时为空时,该按钮才会被禁用。

您的代码中也有错误:T5.toString().trim().length()
T5.toString()EditText 的文本表示,绝不能为空,这与 AND 的使用相结合将导致条件永远不会为真。

关于android - 一旦所有 EditText 字段不为空,启用按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26196770/

相关文章:

android - 动画 MaxLines 和 Ellipsize

android - 如何创建由少数应用程序共享的 sharedpref?

android - 如何在 Xamarin.Forms 中监控应用用户的在线状态

java - 何时调用 Parcel.recycle()?

android - 编辑文本奇怪的行为

android - EditText语言支持?

java - 如何从 Firebase 获取数组列表对象

java - 当我实现它时如何修复文本更改监听器错误?

android - 在beforeTextChange中,值已经改变

java - 单击按钮时将文本从 EditText 发送到 TextView,如果选中单选按钮/复选框,则添加格式