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?
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.
La solution la plus simple: mettre
Android:windowSoftInputMode = "stateVisible"
dans la section Activité de AndroidManifest.xml
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.
Pour moi, seules les solutions suivantes ont été travaillées: Ajouter un manifeste pour cette activité:
Android:windowSoftInputMode="stateVisible|adjustPan"
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);
}
Si vous utilisez un émulateur, vous devez éteindre le clavier matériel pour que le clavier logiciel s'affiche.
Fichier: AndroidManifest.xml
<activity Android:name=".MainActivity">
Ajouter la propriété suivante:
Android:windowSoftInputMode="stateVisible"
Ce qui a fonctionné pour moi.
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"
coller ceci après setContentView
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);