2014-11-13 10 views
26

Ho un frammento che contiene un testo di modifica. Quando si preme Modifica testo, viene mostrata la tastiera. Quando viene premuto il pulsante Salva nell'angolo superiore, l'applicazione ritorna al frammento precedente, ma la tastiera persiste.Nascondi tastiera quando si naviga da un frammento ad un altro

Vorrei che la tastiera fosse nascosta durante la navigazione verso il frammento precedente.

Si prega di notare che ho provato questa soluzione: Close/hide the Android Soft Keyboard.

InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(myView.getWindowToken(), 0); 

Ho provato a utilizzare questo in entrambi i frammenti, nel metodo onCreate.

Ho anche cercato di nascondere la tastiera virtuale nel layout:

android:windowSoftInputMode="stateAlwaysHidden" 

Nessuna di queste ha funzionato, purtroppo.

Avrei postato qualche foto, ma non ho ancora abbastanza reputazione. Apprezzerei qualsiasi aiuto e opinione costruttiva e non dimentico che "Un uomo saggio può imparare di più da una domanda folle di quanto un pazzo possa imparare da una risposta saggia". :)

saluti, Alexandra

+0

Che cos'è myView? – Carnal

+0

È un normale testo di modifica. Proprio come nella soluzione. –

+0

Prova a usare getView() (metodo da Frammento) – Carnal

risposta

76

Inserire il codice che nasconde la tastiera nel pulsante "Salva" click ascoltatore, e utilizzare questo metodo per nascondere la tastiera:

+1

Inserisci quel codice in una classe pubblica e quindi puoi chiamarlo con una riga da qualunque frammento ne abbia bisogno. Roba buona - cercavo questo da anni – DaveSav

+0

risposta migliore (y) –

2

Il modo più semplice per nascondere tastiera frammento o attività

Soluton: 1

//hide keyboard 
public static void hideKeyboard(Context ctx) { 
    InputMethodManager inputManager = (InputMethodManager) ctx 
      .getSystemService(Context.INPUT_METHOD_SERVICE); 

    // check if no view has focus: 
    View v = ((Activity) ctx).getCurrentFocus(); 
    if (v == null) 
     return; 

    inputManager.hideSoftInputFromWindow(v.getWindowToken(), 0); 
} 

Soluzione: 2

InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); 
    inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); 
Problemi correlati