2011-04-11 7 views
3

Comment mettre fin à une activité dans Adroid au toucher. Ici, je montre une vue qui est décrite dans details.xml. J'ai besoin de rejeter l'activité au toucher. J'ai essayé le code suivant. Mais ça ne marche pas. Des idées?Terminer (Fermer) une activité Android au toucher

public class Details extends Activity { 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.details); 
    } 
    public boolean onTouchEvent(MotionEvent event){ 
     this.finish(); 
     return true; 
    }  
} 
+0

Etes-vous certain que onTouchEvent est appelé? Les documents de l'API mentionnent qu'il ne sera appelé en dernier recours que si aucune des vues enfants n'a consommé l'événement. – mmeyer

+0

Je pense que ce n'est pas appelé. Avez-vous une idée de comment ajouter "onTouchEvent" à la vue que j'utilise.Comme ici je l'utilise à partir d'un xml. – dinesh707

Répondre

0
  1. Votre onTouchEvent() ne sera appelée si aucune autre vue sous le doigt dans la hiérarchie de la vue ont consommé l'événement. Ceci est rare, car de nombreuses vues interagissent avec les événements tactiles.

  2. Il est faux de faire des choses dans onTouchEvent() sans regarder ce qu'est l'événement réel.

  3. Généralement, vous devez implémenter une vue qui réagit aux touches et fait ce qui est approprié.

+0

Pouvez-vous vérifier cela: http://stackoverflow.com/questions/5628687/problem-in-android-creating-a-view-dynamically – dinesh707

4

Vous devez utiliser

@Override 
public boolean dispatchTouchEvent(MotionEvent ev) { 
    finish(); 
    return super.dispatchTouchEvent(ev); 
} 
-1

Vous n'avez pas installé un écouteur dans onCreate(). Comme: findViewById (R.id.some_view) .setOnTouchListener (this);

+0

Il n'a pas besoin d'un. Il essaie de faire fermer l'activité lorsque l'écran lui-même est touché. – uyuyuy99

Questions connexes