0

我的應用程序中有一個EditText。使用editText.setText方法每10秒通過代碼更新此editText。我想在用戶打開軟鍵盤時停止此更新。當用戶完成他的輸入操作(按完成)按鈕時,我想從editText.setText繼續更新。 我已經嘗試過InputMethodManager isActive(View)來檢查我的EditText在使用editText.setText方法時是否當前處於活動狀態。當顯示鍵盤時,這是完美的。但是,當用戶單擊完成按鈕和軟鍵盤被隱藏時,isActive(View)仍然爲true,並且我的editText.setText未被調用。 下面是我的代碼,每10秒更新一次editText。防止editText.setText被軟輸入鍵盤修改EditText

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
if(!imm.isActive(editText)){ 
    editText.setText("10.2"); 
    } 

因此,即使在用戶按下軟鍵盤完成按鈕後,這imm.isActive(editText)返回true。 請提出任何方法來完成此任務。

回答

0

解決方案1 ​​

創建一個布爾控制變量isKeyboardVisible並將其設置爲true當你顯示鍵盤,false當你隱藏它。在致電setText()之前檢查其值。

溶液2

的替代,有些哈克解決方案將是爲包圍兩個該改變​​塊內的EditText值的部分。這樣,每個部分在執行之前都會等待另一部分完成。

解決方案3

可以listenEditText的焦點變化事件,並做反應。它們傾向於與顯示/隱藏自身的軟鍵盤一致。

+0

嗨Piovezan,謝謝你的回覆。 –

+0

沒問題。如果您對答案滿意,請點擊左側的複選標記接受答案。 – Piovezan

+0

我在嘗試解決方案1,但是有一些棘手的方法可以找出鍵盤的可見性。在許多線程中,他們建議在鍵盤可見性前後測量屏幕大小。我無法使用這種方法,因爲我在全屏模式下運行此應用程序。解決方案2可能很有用,但是當用戶從鍵盤輸入到editText中時,我無法控制此代碼,並且我無法將此代碼放入同步塊中。 –