5

Ho un frammento con un singolo EditText che richiede che la tastiera virtuale rimanga aperta continuamente. La tastiera si nasconde quando lo schermo viene ruotato. Sto chiamando showSoftInput in OnActivityCreated che viene eseguito dopo la rotazione, ma non mostra la tastiera.showSoftInput non funziona dopo il cambio di orientamento

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

Nota: non desidero utilizzare toggleSoftInput. L'ho provato, ma in alcuni casi finisce per chiudere la tastiera. E non c'è modo di interrogare Android per determinare se la tastiera è già aperta.

risposta

7

Sembra che showSoftInput è molto buggy con Fragments.

Primo tentativo @ soluzione di TronicZomB. Funziona per un'attività con un singolo frammento.

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

Tuttavia, per un'attività con FragmentTransactions nidificate, sarete costretti ad usare toggleSoftInput con lo SHOW_FORCED e HIDE_NOT_ALWAYS parametri. HIDE_NOT_ALWAYS impedisce al comando di commutazione di chiudere la tastiera già aperta dopo un cambio di orientamento.

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

per nascondere la tastiera in un secondo momento, è possibile utilizzare:

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

provare a sostituire la InputMethodManager con il seguente:

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

ho già effettuare le seguenti operazioni in onCreate:. getSherlockActivity() getWindow setSoftInputMode() (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE. | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); – bgolson

+0

Il metodo funziona per un'attività semplice con un singolo frammento. Tuttavia, se l'attività è stata "tradotta" su più frammenti (Attività-> AddFragmento-> SostituisciFragment), non funziona più. – bgolson

Problemi correlati