2011-05-04 33 views
4

關於我創建的Android應用程序:當特定的EditText框爲空時,你如何灰掉「Submit」按鈕?

我有三個需要用數字/字符串填充的EditText框。我有一個提交按鈕,將開始一系列計算。

如果任何框爲空並按下提交,則應用程序崩潰。我試圖用try-catch語句來做到這一點,但它並沒有解決問題。我只是想禁用按鈕,直到三個盒子有數字。我知道有一種方法可以setEnabled(false)我想?或者,還有更好的方法?這會灰色的按鈕?或者是一個無關的函數setEnabled?

+1

可能重複的[Android:如何啓用我的按鈕,如果EditText不是空?](http://stackoverflow.com/questions/2979441/android-how-to-enable-my-button- back-if-edittext-is-not-empty) – 2011-05-04 18:32:52

+0

包含堆棧跟蹤將幫助我們找出真正的問題。 – Haphazard 2011-05-04 18:33:07

回答

5

試試這個解決方案。

EditText edit1; 
EditText edit2; 
EditText edit3; 
View button; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // Your initialization code... 

    TextWatcher watcher = new LocalTextWatcher(); 
    edit1.addTextChangedListener(watcher); 
    edit2.addTextChangedListener(watcher); 
    edit3.addTextChangedListener(watcher); 
    updateButtonState(); 
} 

void updateButtonState() { 
    boolean enabled = checkEditText(edit1) 
     && checkEditText(edit2) 
     && checkEditText(edit3); 
    button.setEnabled(enabled); 
} 

private boolean checkEditText(EditText edit) { 
    return Integer.getInteger(edit.getText().toString()) != null; 
} 

private class LocalTextWatcher implements TextWatcher { 
    public void afterTextChanged(Editable s) { 
     updateButtonState(); 
    } 

    void beforeTextChanged(CharSequence s, int start, int count, int after) { 
    } 

    void onTextChanged(CharSequence s, int start, int before, int count) { 
    } 
} 
0

您應該在XML中默認禁用按鈕,以便用戶不會意外按下按鈕。在此之後,您需要查看您的字段並確保提交之前他們都有數據。

你可以做到這一點,或者你可以提交運行一個快速檢查所有的領域,並確保他們都不等於「」。

基本上是這樣的(如果你想忽略隱藏按鈕,並在檢查後只是處理加工)

if (!((t1.getText().toString.compareTo("") == 0) && (t2.getText().toString.compareTo("")==0) ...)) 
{ 
Do stuff 
} 

else 
{ 
Toast message here 
} 

否則,你可以有一個「守望者」像上面所說的海報。

0

您也可以使用此檢查

boolean checkEditText(EditText editText) { 
    return editText.getText().toString().trim().equals(""); 
} 
0

嗨,我已經嘗試上面的代碼,改變了功能,下面爲它工作給出。

private boolean checkEditText(EditText edit) { 
    return ((edit.getText().toString()).length() >0); 
} 
相關問題