2012-07-26 1 views
3

J'ai une classe GameActivity et une méthode setContentView(GameView). En classe GameView qui étend View j'ai une méthode:Activité de finition Android à partir de class view by touchEvent

public class GameView extends View{ 
... 
    public boolean onTouchEvent(MotionEvent event){ 
     switch(event.getAction()){ 
      case MotionEvent.ACTION_DOWN:  
      Intent intent = new Intent (contexTmp, MainActivity.class); 
      contexTmp.startActivity(intent); 
      //finish(); //->how to finish this activity from class view 
     } 
    } 
} 

Comme vous pouvez le voir dans la classe GameView dans la méthode onTouchEvent() quand j'appuyé sur le bouton je change l'activité à MainActivity. Mon problème est: comment finir l'activité de la vue de classe (d'abord je dois finir l'activité actuelle et ensuite passer à l'activité suivante), parce que la méthode: finish() ne fonctionne pas?

+0

vous devez obtenir une référence à l'activité et appeler méthode de finition sur eux – silentnuke

Répondre

4

utilisation getContext() qui retourne le contexte d'activité utilisé pour créer la vue:

public boolean onTouchEvent(MotionEvent event) { 
    switch(event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      ... 
      ((Activity)getContext()).finish(); 
    } 
} 
1

Tant que votre Gameview est l'un des points de vue de l'activité, vous pouvez simplement appeler:

((Activity)getContext()).finish(); 

Ce sera le contexte de l'activité qui a créé la vue. Alors assurez-vous que c'est l'activité que vous voulez terminer et vous êtes prêt à partir!