L'événement OnClick ne fonctionne que sur edittext
J'ai un edittext, et lorsque l'utilisateur clique sur ce edittext, je veux montrer un alertdialog.
Mon code est le suivant :
edt.setInputType(InputType.TYPE_NULL);
edt.setFocusableInTouchMode(true);
edt.requestFocus();
edt.setCursorVisible(false);
edt.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
CommentDialog.buildDialog(mContext, identifier, false, edt.getId());
}
});
Je ne veux pas le clavier pour afficher lorsque l'utilisateur clique sur le edittext, j'ai donc mis le inputtype à TYPE_NULL.
Mais lorsque l'edittext n'a pas le focus et je clique dessus, l'événement onClick n'est pas exécutée. Quand je clique une deuxième fois, l'alertdialog s'affiche correctement.
Comment puis-je résoudre ce problème?
- Utilisation
onFocusChangeListener
- Totalement incohérent et trompeuses comportement à partir de l'Android cadre. Presque 3 ans après, toujours le même.
Vous devez vous connecter pour publier un commentaire.
Simplement essayer de l'ajouter à votre
XML
fichier. Votre clavier apparaît lorsquewidget
obtient le focus.Donc, pour éviter ce type de comportements mis focusable à
false
. Ensuite, l'utilisation normaleOnClickListener
.Maintenant, il devrait fonctionner.
Vous pouvez utiliser
onTouch
au lieu deonClick
, de sorte qu'il n'a pas d'importance si leEditText
a le focus ou pas.Pas grand chose à faire, vous avez juste à
Si focusableInTouchMode est vrai, alors le toucher est déclenché dans la deuxième touche seulement, de sorte que si vous voulez que les cas d'usage de faux pour focusableInTouchMode. et si vous souhaitez activer la focalisation dans la même position que peut recevoir le focus vrai
faire de votre boîte de dialogue d'alerte s'affichent sur
Éviter l'utilisation d'un
FocusChangeListener
car il va se comporter de façon erratique lorsque vous n'avez pas vraiment besoin (par exemple. lorsque vous entrez dans une activité). Juste mettre unOnTouchListener
avec votreOnClickListener
comme ceci:Ce sera la cause de votre
EditText
à recevoir le focus avant votre onClick appel.Au lieu de paramètre d'entrée de type "Modifiable=false" et "Focus=false" si vous n'avez pas besoin de clavier.
Il peut-être utile pour vous.
Vous devez ajouter onFocusChangeListener:
C'était un réel problème pour moi en essayant de reproduire un bruit de "clic" de l'EditText lorsque le clavier apparaît; j'étais seulement un clic à chaque fois deuxième. Qu'est-ce résolu pour moi a été l'inverse de ce qui a fonctionné pour @neaGaze. Cela a fonctionné pour moi dans my_layout.xml :
Il permet au son de clic/l'événement de se produire à chaque fois lorsque l'utilisateur entre dans l'EditText, tout en permettant également le clavier souple à montrer. Vous avez à gérer la OnClickListener bien sûr, pour que cela se produise, même si vous ne faites rien avec elle, comme suit :
Parlant de ce fichus clavier souple, si j'ai fini de ma boîte de Dialogue style de l'Activité avec le clavier souple en place, peu importe ce que j'ai essayé le clavier est resté quand j'étais retourné à MainActivity. J'avais essayé toutes les suggestions telles que des Fermer/Masquer le clavier Android , Comment fermer Android clavier souple par programmation etc. Aucun n'a fonctionné.
Dans mon cas, je n'ai pas besoin du clavier souple en MainActivity. Ce n'travail était le suivant dans mon AndroidManifest.xml fichier, dans le MainActivity section