2011-03-18 3 views
0

Bonjour J'ai un couple de widgets EditText que je veux changer le comportement de selon les préférences de l'utilisateur. L'utilisateur devrait être en mesure de modifier les vues EditText afin qu'un popup apparaisse avec un certain nombre d'alternatives. Lorsque l'utilisateur veut utiliser une liste pour l'entrée, je vais définir un onTouchListener à la place.Android OnTouchListener reçoit 2 événements en un seul clic

Il fonctionne très bien, sauf que le onTouchListener reçoit deux événements lorsque je clique une fois si deux popupdialogs apparaissent. Ceci est le OnTouchListener:

private OnTouchListener mInputListOnTouckListener = new View.OnTouchListener() 
{ 
     EditText et; 
     @Override 
     public boolean onTouch(View ve, MotionEvent me) 
     { 
      final CharSequence[] items = {"1", "2", "3"}; 
      et = (EditText)ve; 
      AlertDialog.Builder builder = new AlertDialog.Builder(activity); 
      builder.setTitle("Pick a number"); 

      builder.setItems(items, new DialogInterface.OnClickListener() 
      { 
       public void onClick(DialogInterface dialogInterface, int item) 
       { 
        et.setText(items[item]); 
        return; 
       } 
      }); 

      builder.create().show(); 
      return true; 
     } 
}; 

PS: Oui, je veux revenir vrai, car il empêche le clavier d'apparaître.

Répondre

3

Vous recevez probablement un événement ACTION_DOWN lorsque vous touchez l'écran et un événement ACTION_UP lorsque vous le relâchez. Utilisez la méthode getAction() sur le MotionEvent pour déterminer l'événement que vous recevez et effectuez vos tâches uniquement sur ACTION_UP par exemple.

+0

Problème résolu! Merci pour la réponse rapide! – vikke