2014-03-19 37 views
2

我想實現一個類似於android鬧鐘應用的EditText。在這個應用程序中,有兩個EditText字段用作HHmm。在這些字段中鍵入將覆蓋之前存在的號碼。當您將第二個號碼輸入HH字段時,焦點將自動切換到mm字段。在edittext中設置時間

我試圖在afterTextChanged()方法中手動使用TextWatcher這個邏輯,但不幸的是在此方法中修改文本會導致遞歸循環。

什麼是正確的實現方式?

請參閱以下鬧鐘應用例如:

enter image description here

回答

0

原來編輯從onTextChanged法文本實際上並沒有引起遞歸循環,只要你暫時用布爾開關禁用邏輯。精心編寫了所有的邏輯到TextWatcher以模仿報警風格的EditText字段。

0

添加監聽到你的HH文本視圖這樣

hh.setOnKeyListener(new OnKeyListener() { 

     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 

      if (hh.getText().toString().length() == 2){ 
       mm.requestFocus(); 
      } 
      return false; 
     } 
    }); 

希望這會爲你工作。

+0

不幸的是'android:maxLength =「2」'在這種情況下不起作用。 'EditText'將始終有2個數字(從開始) - 所以當用戶嘗試輸入時,它必須覆蓋已經存在的內容。然而,到了maxLength',它有效地阻止曾經拍攝「新的數字」是由用戶輸入設置爲2'TextChangedListener' - 因爲只要用戶輸入一個新的數字 - 它被忽略,由於'的EditText達到了最大值。 –

+0

請看看android手機上的鬧鐘應用程序,看看我的意思 - 你會更好地瞭解我想要複製的行爲。 –

+0

我已經更新了我的代碼,現在請求 –