我有一个带有单个EditText的片段,需要软键盘不断打开。旋转屏幕时键盘会隐藏。我在OnActivityCreated中调用showSoftInput,它在旋转后执行,但它没有显示键盘。
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(edit, 0);
注意:我不想使用toggleSoftInput。我试过了,但在某些情况下最终会关闭键盘。并且没有办法查询android以确定键盘是否已经打开。
答案 0 :(得分:8)
看来showSoftInput对Fragments来说非常错误。
首先尝试@ TronicZomB的解决方案。它适用于具有单个片段的活动。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
但是,对于具有嵌套FragmentTransactions的Activity,您将被强制使用带有SHOW_FORCED和HIDE_NOT_ALWAYS参数的toggleSoftInput。 HIDE_NOT_ALWAYS可防止切换命令在方向更改后关闭已打开的键盘。
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_NOT_ALWAYS);
要稍后隐藏键盘,您可以使用:
imm.hideSoftInputFromWindow(activity.findViewById(android.R.id.content).getWindowToken(), 0);
答案 1 :(得分:2)
尝试使用以下内容替换InputMethodManager
:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);