Masquer le clavier programmable de manière fiable

J'ai une application, et de la nécessité de fermer la softkeyboard sur une assez grande quantité d'actions. Par exemple, lorsque en cliquant sur un boutonlorsqu'une nouvelle plansur orientation de l'écran de changement delorsque le contrôleur indique de l'INTERFACE utilisateur, et cetera.
J'utilise le optionsMenuButton pour basculer la vue avec un ViewFlipper, et, évidemment, je veux le clavier pour se cacher dans la retournée de vue (il n'y a pas de champ de saisie).

J'ai essayé ces si loin et de dire pourquoi ils ne sont pas fiables:

Ce n'est pas le travail parce que j'ai beaucoup de editTexts, et d'autres points de vue. J'ai besoin d'un plus générique, qui n'a pas besoin d'une vue comme argument, si possible.

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

Cela ne marche pas du tout pour moi:

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

Celui-ci fonctionne, mais apparaît immédiatement le clavier de nouveau lorsque la vue est inversé.

InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);

Celui-ci fonctionne parfois, mais getCurrentFocus() renvoie la valeur null, la plupart du temps.

InputMethodManager inputManager = (InputMethodManager)            
Context.getSystemService(Context.INPUT_METHOD_SERVICE); 
inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(),      
InputMethodManager.HIDE_NOT_ALWAYS);

Celui-ci fonctionne uniquement si le clavier est affiché:

getInstrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);

Celui-ci ne fonctionne pas avec l'EditText comme le premier morceau de code, mais avec la racine de la Mise en page, ce qui change sur le changement d'orientation et à chaque fois que le oncreate est appelé. J'ai différents layout XML pour portrait/paysage et normale/large. Toutes les racines Mises à l'IDENTIFIANT root. Cela fonctionne très bien, la première fois, mais après cela, il ne fonctionne plus.

InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(findViewById(R.id.root).getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);

Ligne de fond: j'ai essayé de hella beaucoup de softkeyboard cacher les méthodes, mais aucune ne semble fonctionner de manière fiable. Est-il tout méthode pour masquer le clavier de manière fiable?

source d'informationauteur stealthjong