2010-10-13 7 views
6

J'ai une vue à onglets avec une activité par onglet, et lorsque je passe du premier onglet, qui a un TextView, au second onglet, qui affiche seulement une liste cliquable, le clavier souple est toujours là. Je veux qu'il aille, alors j'ai essayé ceci:Masquer le clavier logiciel sur l'activité sans opérations au clavier

public static void hideSoftKeyboard (Activity activity, View view) { 
    InputMethodManager imm = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 
} 

mais cela ne fonctionne pas, parce qu'il n'y a pas de vue pertinent de fournir, car il n'y a pas de vue sur l'écran qui prend l'entrée du clavier. Des suggestions sur la façon de résoudre ce problème?

Répondre

16

Essayez ceci dans la 3e ligne de votre code:

imm.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0);

16

Essayez la réponse fournie par Joe sur: Stop EditText from gaining focus at Activity startup

Placez ce dans le manifeste pour votre activité: android:windowSoftInputMode="stateHidden"

C'est une question commune, et il est bon de savoir que le cadre gère vraiment très bien.

+3

: -/J'ai ceci mais cela n'a pas aidé. Lorsque j'utilise le sélecteur de tâches pour passer d'une activité avec le clavier à mon activité (qui n'a pas de saisie de texte et n'a donc pas besoin de clavier), le clavier reste allumé. – ArtOfWarfare

+1

Cela ne fonctionne pas non plus si vous êtes dans une activité, appuyez sur un texte d'édition pour afficher le clavier, puis appuyez sur le bouton de retour de l'en-tête de la barre d'action. Le retour à l'activité précédente ne masque pas le clavier même s'il possède le paramètre windowSoftInputMode. –

4

Vous pouvez également essayer

imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);

4
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); 
0

Cette méthode peut vous aider à cacher quelque manière que ce clavier. Cela fonctionne bien pour moi

public void hideKeyboard(Activity activity, View view) { 
     if (activity != null) { 

      if(view != null) 
      { 
       try { 
        InputMethodManager imm = (InputMethodManager)this.getSystemService(Service.INPUT_METHOD_SERVICE); 
        imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      }else 
      { 
       activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
      } 

     } 
    } 
+0

Est-il également utile pour cacher la touche logicielle dans un webview TOUJOURS? – Criss

Questions connexes