我想實現一個類似於android鬧鐘應用的EditText
。在這個應用程序中,有兩個EditText
字段用作HH
和mm
。在這些字段中鍵入將覆蓋之前存在的號碼。當您將第二個號碼輸入HH
字段時,焦點將自動切換到mm
字段。在edittext中設置時間
我試圖在afterTextChanged()
方法中手動使用TextWatcher
這個邏輯,但不幸的是在此方法中修改文本會導致遞歸循環。
什麼是正確的實現方式?
請參閱以下鬧鐘應用例如:
我想實現一個類似於android鬧鐘應用的EditText
。在這個應用程序中,有兩個EditText
字段用作HH
和mm
。在這些字段中鍵入將覆蓋之前存在的號碼。當您將第二個號碼輸入HH
字段時,焦點將自動切換到mm
字段。在edittext中設置時間
我試圖在afterTextChanged()
方法中手動使用TextWatcher
這個邏輯,但不幸的是在此方法中修改文本會導致遞歸循環。
什麼是正確的實現方式?
請參閱以下鬧鐘應用例如:
原來編輯從onTextChanged
法文本實際上並沒有引起遞歸循環,只要你暫時用布爾開關禁用邏輯。精心編寫了所有的邏輯到TextWatcher
以模仿報警風格的EditText
字段。
添加監聽到你的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;
}
});
希望這會爲你工作。
不幸的是'android:maxLength =「2」'在這種情況下不起作用。 'EditText'將始終有2個數字(從開始) - 所以當用戶嘗試輸入時,它必須覆蓋已經存在的內容。然而,到了maxLength',它有效地阻止曾經拍攝「新的數字」是由用戶輸入設置爲2'TextChangedListener' - 因爲只要用戶輸入一個新的數字 - 它被忽略,由於'的EditText達到了最大值。 –
請看看android手機上的鬧鐘應用程序,看看我的意思 - 你會更好地瞭解我想要複製的行爲。 –
我已經更新了我的代碼,現在請求 –