5

Mam fragment z pojedynczym EditText, który wymaga, aby klawiatura była stale otwarta. Klawiatura zostanie ukryta po obróceniu ekranu. Nazywam showSoftInput w OnActivityCreated, który zostanie wykonany po obrocie, ale nie pokazuje klawiatury.showSoftInput nie działa po zmianie orientacji

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

Uwaga: Nie chcę używać toggleSoftInput. Próbowałem, ale w niektórych przypadkach kończy się zamykanie klawiatury. I nie ma sposobu na zapytanie Androida, aby ustalić, czy klawiatura jest już otwarta.

Odpowiedz

7

Wydaje się, że showSoftInput jest bardzo buggy z fragmentów.

Najpierw wypróbuj rozwiązanie @ TronicZomB. Działa dla Aktywności z jednym Fragmentem.

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

Jednak dla działalności z zagnieżdżonych FragmentTransactions, będziesz zmuszony do korzystania toggleSoftInput z SHOW_FORCED i HIDE_NOT_ALWAYS parametrów. HIDE_NOT_ALWAYS uniemożliwia komendę przełączania zamknięcia już otwartej klawiatury po zmianie orientacji.

InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_NOT_ALWAYS); 

Aby ukryć klawiaturę w późniejszym czasie, można użyć:

imm.hideSoftInputFromWindow(activity.findViewById(android.R.id.content).getWindowToken(), 0); 
1

spróbować wymienić InputMethodManager z następujących czynności:

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

już wykonaj następujące czynności w onCreate. getSherlockActivity() getWindow() setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE. | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); – bgolson

+0

Twoja metoda działa dla prostej czynności z pojedynczym fragmentem. Jeśli jednak działanie "wykonano" na wiele fragmentów (Activity-> AddFragment-> ReplaceFragment), to już nie działa. – bgolson