3

我有类 GameActivity 并在那里有一个方法setContentView(GameView)。在GameView扩展类中,View我有一个方法:

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 
        }
    }
}

正如您GameView在方法类中看到的那样,onTouchEvent()当我按下按钮时,我将活动更改为MainActivity. 我的问题是:如何从班级视图完成活动(首先我必须完成当前活动,然后进入下一个活动),因为方法: finish()不起作用?

4

2 回答 2

4

使用getContext()which 返回用于创建视图的活动上下文:

public boolean onTouchEvent(MotionEvent event) {
    switch(event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
          ...   
          ((Activity)getContext()).finish();
    }
}
于 2012-07-26T22:54:35.797 回答
1

只要您的 GameView 是活动中的视图之一,您就可以简单地调用:

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

这将是创建视图的活动的上下文。因此,只需确保这是您想要完成的活动,并且一切顺利!

于 2012-07-26T22:55:22.537 回答