方向更改后,showSoftInput不起作用

时间:2013-05-07 17:44:07

标签: android android-softkeyboard android-keypad android-input-method

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

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

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

2 个答案:

答案 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);