6

ソフトキーボードを継続的に開いておく必要がある単一の EditText を持つフラグメントがあります。画面を回転させるとキーボードが隠れます。回転後に実行される OnActivityCreated で showSoftInput を呼び出していますが、キーボードが表示されません。

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

注: toggleSoftInput を使用したくありません。私はそれを試しましたが、場合によってはキーボードが閉じてしまいます。また、Android にクエリを実行して、キーボードが既に開いているかどうかを判断する方法はありません。

4

2 に答える 2

9

Fragments では、showSoftInput に非常にバグがあるようです。

最初に @TronicZomB のソリューションを試してください。単一のフラグメントを持つアクティビティに対して機能します。

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);

ただし、FragmentTransactions がネストされたアクティビティの場合は、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 に答える