onConfigurationChanged() pas de tir pour keyboardHidden
J'ai suivi les différentes questions et les réponses pour l'installation de mon Android activité pour remplacer le onConfigurationChanged()
afin d'exécuter une logique lorsque le clavier s'ouvre et se ferme. Voici les extraits pertinents de mon code. J'ai bouilli vers le bas pour le scénario le plus simple:
AndroidManifest.xml
...
<activity
android:name=".SearchActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation"
/>
...
SearchActivity.java
...
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Toast.makeText(this, "onConfigurationChanged()", Toast.LENGTH_SHORT).show();
}
...
Le code ci-dessus va afficher le Toast quand j'ai changer d'orientation, mais ne fait rien quand le clavier s'ouvre ou se ferme. J'ai testé d'ouvrir le clavier virtuel via EditText en se concentrant et en ouvrir manuellement avec un appui long sur le bouton menu. Ni feu le onConfigurationChanged()
appel.
De sorte que le code semble fonctionner depuis le changement d'orientation des feux, mais je ne reçois rien pour le clavier. Des idées? Si la réponse est "onConfigurationChanged() ne l'attrape pas les événements du clavier logiciel", ce qui est une solution appropriée pour la détection et la gestion de cet événement?
Juste au cas où c'est pertinent, je suis en train de tester sur un Droid X fonctionnant en pain d'épice.
OriginalL'auteur Tony Lukasavage | 2011-06-08
Vous devez vous connecter pour publier un commentaire.
Non, onConfigurationChange() ne l'attrape pas les événements du clavier logiciel: ce n'est pas un changement de configuration. Le changement d'orientation provoque un nouvel ensemble de ressources (telles que la mise en page-terre vs layout-port), ce qui est la définition d'un changement de configuration.
Alors, comment faire? Eh bien, Il n'y a aucun événement déclenché lorsque le clavier est affiché, mais vous pouvez détecter lorsque le clavier les causes de votre mise en page pour être ajusté.
Voir Comment vérifier la visibilité de logiciel clavier Android? pour le code.
keyboardHidden
est clairement une partie deConfiguration
objet et même utilisé dans l'exemple ici developer.android.com/guide/topics/resources/... à Partir de la documentation:A flag indicating whether any keyboard is available. Unlike hardKeyboardHidden, this also takes into account a soft keyboard, so if the hard keyboard is hidden but there is soft keyboard available, it will be set to NO. Value is one of: KEYBOARDHIDDEN_NO, KEYBOARDHIDDEN_YES.
OriginalL'auteur Shawn Lauzon