2014-10-04 40 views
0

我有我使用TextWatcher 9個的EditText領域,我所希望得到的工作是,如果這九個的EditText字段填寫啓用按鈕,如果不禁止,啓用按鈕,一旦所有的EditText字段不爲空

我在OnCreate中禁用按鈕,所以當程序第一次運行按鈕時是禁用的,但是如果我在一個編輯文本字段中輸入一個數字,即使其他八個字段都是空的,也會一次刪除所有文本字段中的按鈕仍處於啓用狀態。

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); 
     } 
    } 
}; 

回答

0

「你的邏輯是有缺陷的」

既然你要禁用的按鈕,如果EditText -fields中的任何一個都是空的,你應該檢查他們OR(||)代替AND(&&) 。如果您使用AND,則僅在全部EditText s爲空的同時纔會禁用按鈕。

您的代碼中還有一個錯誤:T5.toString().trim().length()
T5.toString()EditText的文本表示形式,絕不能爲空,這與AND的用法相結合會導致從不成立的情況。

+0

我錯過了||和.trim,我刪除它們,它現在正在工作,這是一段時間,因爲我與Java的工作。 – David 2014-10-04 20:32:14

0

這是正常的,看看你的情況。

如果我至少有ONE字段不爲空,我進入其他條件並啓用按鈕。

如果你想擁有所有字段不爲空,恢復你的病情的過程:

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