2011-06-03 74 views
0

在此先感謝您的答案。我正在研究一個基本稅計算器,以幫助我更好地理解Android SDK的基本原理。用戶輸入小計和稅率(.08),然後按計算以計算解決方案。我禁用計算按鈕,直到兩個字段都有內容。我的問題是,當用戶輸入兩個字段的數字時,計算按鈕仍然被禁用。我發佈了我當前正在運行的代碼(OnKeyListener)。 edittext字段被註冊到偵聽器。啓用按鈕的OnKeyListener問題

private OnKeyListener mKeyListener = new OnKeyListener() 
{ 
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) 
    { 
     switch(v.getId()) 
     { 
     case R.id.txtSub: 
      cmdSubmit.setEnabled(txtTax.getText().length()>0 
        && txtSub.getText().length() > 0); 
      break; 
     case R.id.txtTax: 
      cmdSubmit.setEnabled(txtTax.getText().length()>0 
        && txtSub.getText().length() > 0); 
      break; 
     } 
     return false; 
    } 

}; 

回答

0

如果你看一下spec爲OnKeyListener你會發現,它被調用之前該KeyEvent是考慮到視圖。除此之外,這看起來是正確的:我會懷疑你沒有把聽衆綁定到正確的視角。在該方法中放置一個斷點並確保它正確調用。

0

我個人發現TextWatcher關於防範的EditText有數據還是沒有軌道的好得多的辦法:

TextWatcher tw = new TextWatcher() { 
    @Override 
    public void afterTextChanged(Editable s) { 
    cmdSubmit.setEnabled(!Utils.isStringBlank(txtTax.getText().toString()) && 
         !Utils.isStringBlank(txtSub.getText().toString())); 
    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 
    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) {} 
}; 
txtTax.addTextChangedListener(tw); 
txtSub.addTextChangedListener(tw);