6

我有一个带有单个 EditText 的片段,需要软键盘持续保持打开状态。旋转屏幕时键盘会隐藏。我在 OnActivityCreated 中调用 showSoftInput ,它在旋转后执行,但它不显示键盘。

InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(edit, 0);

注意:我不想使用 toggleSoftInput。我已经尝试过了,但在某些情况下它最终会关闭键盘。而且没有办法查询android来确定键盘是否已经打开。

4

2 回答 2

9

看来 showSoftInput 对 Fragments 非常有问题。

首先尝试@TronicZomB 的解决方案。它适用于具有单个 Fragment 的 Activity。

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);
于 2013-05-08T16:02:06.390 回答
2

尝试用InputMethodManager以下内容替换:

 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
于 2013-05-07T17:47:43.483 回答