我在一个Activity中有两个片段,并且两个片段都包含一个EditText。当第一个EditText被聚焦(显示键盘)并且用户按下键盘的下一个按钮时,我正在使用以下代码将焦点转移到第二个片段中的EditText:
View next = autoCompleteTextView.focusSearch(View.FOCUS_DOWN);
if (next != null) {
next.requestFocus();
}
第二个EditText将获得应有的焦点(光标开始在其中闪烁),但是显示的键盘被隐藏了。 我不明白为什么会这样。我尝试了数百万种不同的解决方案,以强制再次显示键盘,但没有任何效果。我不知道为什么它首先被隐藏起来,我只是转移焦点。
答案 0 :(得分:0)
对我唯一有用的是:
mComposeMsgBody.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus && mComposeMsgBody.isEnabled()) {
mComposeMsgBody.post(new Runnable() {
@Override
public void run() {
final InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(mComposeMsgBody, InputMethodManager.SHOW_IMPLICIT);
}
});
}
}
});
但这不是理想的,因为键盘试图隐藏起来,然后我强迫它向上移动,所以键盘会进行这1秒钟的向下移动。如果有人有更好的解决方案,只需要转移焦点而不用键盘做任何事情,请发布答案。