【问题标题】:Enable Button once all EditText Fields are not empty一旦所有 EditText 字段不为空,启用按钮
【发布时间】:2014-10-04 20:15:18
【问题描述】:

我有九个 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);
        }
    }
};

【问题讨论】:

    标签: android android-edittext


    【解决方案1】:

    “你的逻辑有缺陷”

    由于您想在EditText 字段中的任何一个为空时禁用该按钮,因此您应该使用 OR (||) 而不是 AND (&&) 来检查它们。如果您使用 AND,则仅当 所有EditTexts 为空同时时,该按钮才会被禁用。

    您的代码中还有一个错误:T5.toString().trim().length()
    T5.toString()EditText 的文本表示,并且不能为空,再加上使用 AND 将导致条件从来都不是真的。

    【讨论】:

    • 我错过了 ||和 .trim,我删除了它们,它现在可以工作了,因为我使用 java 已经有一段时间了。
    【解决方案2】:

    这是正常的,看看你的情况。

    如果我至少有 ONE 字段不为空,我将进入 else 条件并启用按钮。

    如果您想让所有字段不为空,请恢复您的条件流程:

    if(one of all field is empty) {
       button remains enable false
    } else {
      button comes enable
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      • 2014-07-29
      • 2014-05-31
      • 2019-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多