5

하나의 EditText가있는 프래그먼트에 소프트 키보드가 계속 열려 있어야합니다. 화면이 회전하면 키보드가 숨겨집니다. OnActivityCreated에서 showSoftInput을 호출하면 회전 후에 실행되지만 키보드는 표시되지 않습니다.방향 변경 후 showSoftInput이 작동하지 않습니다.

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

참고 : toggleSoftInput을 사용하고 싶지 않습니다. 나는 그것을 시도했지만 어떤 경우에는 키보드를 닫는 것을 끝낸다. 그리고 키보드가 이미 열려 있는지 확인하기 위해 안드로이드를 쿼리 할 방법이 없습니다. 다음과 InputMethodManager를 교체

답변

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

봅니다 :

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가 여러 조각 (Activity-> AddFragment-> ReplaceFragment)에 "처리"된 경우 더 이상 작동하지 않습니다. – bgolson

관련 문제