我的應用使用基於PIN的登錄。我有一個四點連勝的EditText意見,並設置以下TextWatcher的一個單獨的實例上的每個人:三星軟鍵盤在焦點變化後丟失按鍵
private class PinDigitWatcher implements TextWatcher {
private final EditText digit;
public PinDigitWatcher(EditText digit) {
this.digit = digit;
}
@Override
public void afterTextChanged(Editable s) {
if (s.length() <= 0)
return;
switch (digit.getId()) {
case R.id.pin_digit_a:
mPinDigitB.setFocusableInTouchMode(true);
mPinDigitB.requestFocus();
mPinDigitA.setFocusable(false);
break;
case R.id.pin_digit_b:
mPinDigitC.setFocusableInTouchMode(true);
mPinDigitC.requestFocus();
mPinDigitB.setFocusable(false);
break;
case R.id.pin_digit_c:
mPinDigitD.setFocusableInTouchMode(true);
mPinDigitD.requestFocus();
mPinDigitC.setFocusable(false);
break;
case R.id.pin_digit_d:
mPinDigitD.setFocusable(false);
onSubmitPin();
break;
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) { }
}
每個用戶將文本輸入到EditText上的一個觀看TextWatcher移動的時間焦點到「下一個」一。如果用戶在最後一個輸入文本,則將請求發送到服務器。
這項工作在我測試過的所有設備上都很棒,但三星S3和S4的除外。在這些設備上,當用戶點擊軟鍵盤上的按鍵時,焦點改變後會有半秒的延遲。結果是,如果用戶點擊第一個EditText以調出鍵盤,則快速連續敲擊一個數字四次(例如,如果他的PIN是「1111」),第一個數字被註冊,焦點改變,但其他三個數字是下降。
我進入了「三星鍵盤設置」,並禁用預測文字,自動替換,自動大小寫,自動間隔和自動標點符號。似乎沒有什麼區別。
我的S3和S4都運行Android 4.3,所以,不幸的是,我不能說這是「三星問題」還是「Android 4.3問題」。我已經驗證它不會在運行4.2.2的Galaxy Nexus和運行4.4.2的Nexus 4上發生。
任何關於解決方法的想法?
編輯:
我重建問題上的三星S4運行的是Android 4.2.2所以它似乎是一個三星的問題,而不是Android 4.3的明確。這裏是說明行爲的工作項目:拳頭的EditText
https://drive.google.com/file/d/0B6DvDY2BvxUTRUxZNE5DNXJJM2c
點擊彈出軟鍵盤,然後點擊快速連續任一數字鍵四次。只有第一個水龍頭會被註冊。在四個水龍頭結束時,重點將放在第二個EditText(從左邊開始)。
編輯:在兩款手機表現出的問題
更多信息:
- S4:三星SGH-I337,採用Android 4.3,共築:JSS15J.I337UCUEMK2, 內核:3.4。 0-1921628 2013年11月16日)
- S3:三星SGH-I747,機器人4.3,生成:JSS15J.I747UCUEMJB, 內核:3.0.31-2024954 2013年10月31日)
我無法重現上GT-I9506採用Android 4.3的問題;三星鍵盤(它在App信息屏幕上顯示版本4.0),輸入語言:英語(英國)。 – ozbek
嘗試儘可能快地敲打單個號碼。我在大約1秒內對數字「1」進行了四次敲擊,其中只有兩次進入了EditTexts。我認爲這個掛斷是與三星軟鍵盤。它正在做一些事情,導致它無視額外的水龍頭,直到它完成它所做的任何事情。我編輯了這個問題,以便在我看到問題的手機中包含更詳細的信息。 – jph
對此有何更新?在三星設備上有相同的問題很長一段時間。一旦我連接TextWatcher輸入變得非常慢。 – Mikhail