Sto visualizzando una finestra di dialogo con una vista di modifica. Tuttavia, il softkeyboard si aprirà solo se l'utente preme all'interno di editview. Così ho provato a chiamare un InputMethodManager con il seguente codice.Mostra tastiera virtuale per finestra di dialogo
InputMethodManager imm =
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(dialogField,0);
Il campo di dialogo è Campo di dialogo. Tuttavia, quando esattamente dovrei farlo? L'ho provato nel metodo onStart() della finestra di dialogo, ma non succede nulla. Ho anche provato a richiedere lo stato attivo per il dialogField, ma questo non modifica nulla.
Ho provato anche questo codice
dialogField.setOnFocusChangeListener(new View.OnFocusChangeListener()
{
public void onFocusChange (View v, boolean hasFocus)
{
if (hasFocus)
{
Main.log("here");
dialogInput.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
/*
InputMethodManager mgr =
(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(dialogField,0);
*/
}
}
});
in entrambe le versioni. Ma nessuna tastiera virtuale vorrebbe apparire. Il Main.log è solo un log, che mi mostra che la funzione è effettivamente chiamata. E sì, è chiamato.
Potrei ottenere la tastiera con il flag SHOW_FORCED prima che la finestra di dialogo si apra. Ma poi non si chiuderà all'uscita. E posso solo farlo PRIMA che mostri la finestra di dialogo. All'interno di ogni callback non funziona neanche.
Hai provato il flag SHOW_IMPLICIT? –
Questo è qualcosa con cui ho lottato eccessivamente ma che non sono riuscito a lavorare correttamente. – Thomas
Sì, ho provato il flag SHOW_IMPLICIT. La documentazione dice esattamente che è necessario chiamare showSoftInput, se si prevede che l'utente faccia l'input per un TextEdit. Ma come? – Rene