我目前正在開發一個具有3步驗證嚮導的應用程序。爲什麼InputMethodManager.isFullscreen()在應用程序旋轉後不可靠?
我需要知道用戶是否正在全屏編輯文本,以便我可以關閉鍵盤而不是繼續執行嚮導中的下一步。
我目前正面臨着一個令人討厭的問題,其中以下代碼在活動輪換後返回錯誤結果。
private boolean isFullscreenInputMode(EditText edit) {
InputMethodManager imm = (InputMethodManager)edit.getContext().getSystemService(Context.INPUT_METHOD_SERVICE );
return imm.isFullscreenMode();
}
該代碼旨在檢測鍵盤是全屏模式還是ExtractEditText用於輸入。
如果我的應用程序在橫向模式下啓動,並且繼續執行整個3步向導,則此方法將返回true。如果我沿着停止工作的方式旋轉手機一次。
注意:該調用不是在onPause或onResume回調方法中執行的。正如我從其他帖子瞭解到的,這些情況可能會導致方法返回錯誤的值。
另外,是否有另一種方法來檢測鍵盤是否處於全屏模式?
在此先感謝!
編輯添加有關的EditText視圖中的「完成」按鈕editorActionListener代碼:
edit.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId == EditorInfo.IME_ACTION_DONE && edit.getText().length() >= minKeys) {
if(!isFullscreenInputMode(edit)) {
performOkPress(edit, okButton, result);
}
else {
return false;
}
return true;
}
return false;
}
private void performOkPress(final EditText edit, final Button okButton, final ViewResult result) {
if(okButton.isEnabled()) {
okPressed(edit, okButton, result);
}
}
});
當你旋轉屏幕時,這意味着你正在改變方向從縱向到橫向,反之亦然。 .....每次,你的onCreate被一次又一次地調用。這就是爲什麼你看到這些錯誤的結果。 – 2013-02-26 08:27:56