5

ソフトキーボードを連続して開いたままにする必要のある単一のEditTextを持つフラグメントがあります。画面を回転させると、キーボードが非表示になります。 OnActivityCreatedでshowSoftInputを呼び出すと、回転後に実行されますが、キーボードは表示されません。方向変更後にshowSoftInputが機能しない

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

注:toggleSoftInputは使用しません。私はそれを試みたが、それはいくつかの例ではキーボードを閉じることに終わる。キーボードがすでに開いているかどうかを判断するためにアンドロイドに問い合わせる方法はありません。

答えて

7

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); 
1

は、以下でInputMethodManagerを交換してみてください:

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

私はすでにのonCreateで次の手順を実行します。 getSherlockActivity()は、GetWindow()setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE。 | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); – bgolson

+0

あなたのメソッドは、単一のフラグメントを持つ単純なアクティビティで動作します。しかし、アクティビティが複数のフラグメント(Activity-> AddFragment-> ReplaceFragment)に「処理」された場合、それはもはや機能しません。 – bgolson

関連する問題