web-dev-qa-db-fra.com

Afficher le clavier virtuel au début de l'activité

J'ai 2 activités, A et B. Quand A commence, il vérifie une condition et si vrai, il appelle startActivityForResult() pour démarrer B. B ne prend que la saisie de texte, il est donc logique que le clavier logiciel s'affiche automatiquement lorsque B démarre. Lorsque l'activité commence, l'EditText a déjà le focus et est prêt pour la saisie. 

Le problème est que le clavier n'apparaît jamais, même si windowSoftInputMode="stateAlwaysVisible" est défini dans le manifeste sous la balise <activity> pour B. J'ai également essayé avec la valeur définie à stateVisible. Comme il ne s'affiche pas automatiquement, je dois taper sur EditText pour le faire apparaître. 

Quelqu'un sait quelle pourrait être la solution?

47
Al.

Ce qui a le mieux fonctionné pour moi, c’est dans le manifeste Android de l’activité B qui ajoute 

Android:windowSoftInputMode="stateVisible"

J'espère que cela vous aidera aussi.

89
Leo

La solution la plus simple: mettre 

Android:windowSoftInputMode = "stateVisible" 

dans la section Activité de AndroidManifest.xml

18
Uncaught Exception

Si requestFocus sur un EditText ne l'affiche pas, peut-être que ça le fera:

InputMethodManager imm = (InputMethodManager)getSystemService(
    Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(mEditText, 0);

Regardez ici pour plus d'informations.

13
synic

Pour moi, seules les solutions suivantes ont été travaillées: Ajouter un manifeste pour cette activité:

Android:windowSoftInputMode="stateVisible|adjustPan"
11
Paul

Essayez d’afficher le clavier avec un peu de retard. Quelque chose de semblable à ceci:

public void onResume() {
    super.onResume();

    TimerTask tt = new TimerTask() {

        @Override
        public void run() {
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.showSoftInput(yourTextBox, InputMethodManager.SHOW_IMPLICIT);
        }
    };

    final Timer timer = new Timer();
    timer.schedule(tt, 200);
}
5
whlk

Si vous utilisez un émulateur, vous devez éteindre le clavier matériel pour que le clavier logiciel s'affiche.

2
Chad Hedgcock

Fichier: AndroidManifest.xml

<activity Android:name=".MainActivity">

Ajouter la propriété suivante:

Android:windowSoftInputMode="stateVisible"

Ce qui a fonctionné pour moi.

1
Keyur Sureliya

J'ai deux voies.

Méthode 1. Utilisez le code suivant dans la méthode OnCreate

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

Cela empêchera le clavier d'apparaître à moins que vous ne cliquiez.

ou 

Méthode 2 Vous pouvez déplacer le focus sur une autre vue comme TextView en utilisant "requestfocus" dans le fichier xml.

<TextView
            Android:id="@+id/year_birth_day"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:layout_weight="1"
            Android:text="1991">            
           <requestFocus />
           </TextView>

Méthode 3 (Je pense que cela devrait être évitable) En utilisant le code suivant dans le manifeste

Android:windowSoftInputMode="stateVisible"
1
abc

coller ceci après setContentView

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
0
Ashwini