我目前正在开发一款具有3步身份验证向导的应用。
我需要知道用户是否正在全屏编辑文本,以便我可以关闭键盘而不是继续执行向导中的下一步。
我目前正面临一个恼人的问题,即以下代码在活动旋转后返回错误结果。
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 );
}
}
} );
答案 0 :(得分:0)
当你旋转屏幕时,这意味着你正在改变从纵向到横向的方向,反之亦然.......每次,你的onCreate会被一次又一次地调用。这就是为什么你看到这些错误的结果。尝试在旋转时保存活动状态...希望它有所帮助