2 myq 26 myq_26 于 2012.09.26 09:46 提问

如何变换Android中的Activity?

我在做一个小游戏程序,有3个activity。第一个activity是主菜单 (FirstActivity class)。代码如下:

Intent i = new Intent(this, SecondActivity.class);  
startActivityForResult(i, ACTIVITY_CREATE);

当执行第二个activity。代码如下:

setContentView(new MovementView(this));

MovementView 类继承SurfaceView. 在MovementView 类中写了所有的游戏代码。

我想实现当lives == 0, 就执行第三个activity. 如何实现啊?
我尝试着把代码写成类似第一个 FirstActivity类,但是程序就不能运行。如果我用下面这个方法:

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

又会跳回第一个Activity, 这个不是我要实现的,我想跳到第三个activity。
请大师帮忙,不胜感激。

3个回答

curie_87
curie_87   2012.09.26 10:30
已采纳

FirstActivity class:

private void startGame() {
        Intent i = new Intent(this, SecondActivity.class);
        startActivity(i);
    }

SecondActivity class:

protected void onCreate(Bundle savedInstanceState) {
setContentView(new MovementView(this));
}        
    @Override
    protected void onDestroy() {
        Intent i = new Intent(this, GameOver/*GameOver=ThirdActivity*/.class);
        startActivity(i);
        super.onDestroy(); 
    }

MovementView class:

if (lives == 0){            
updateThread.setRunning(false);
((Activity)getContext()).finish();
}
xiaoxiaobian3310903
xiaoxiaobian3310903   2012.09.26 10:13

你在第二个activity中写一个跳转的方法,然后将这个activity传递到MovementView中,在MovementView中当判断lives ==0时执行activity的跳转方法
activity中的方法:
public void skipPage(){
Intent lIntent = new Intent();
lTntent.setClass(this, Test.class);
this.startActivity(lIntent);
this.finish();
}
MoveMentView中的方法:
定义一个类成员变量mActivity;
在构造函数中:mActivity = (Activity)context;
在判断lives == 0时执行mActivity.skipPage();

xiaoxiaoaishang
xiaoxiaoaishang 谢谢您的代码
大约 5 年之前 回复
xiaoxiaoaishang
xiaoxiaoaishang 能具体写下代码么?新手额
大约 5 年之前 回复
yongyong_21
yongyong_21   2012.09.26 11:52
private Activity a;

public MovementView(Acitivity a) {
  this.a = a;
  // your code
}


Intent i = new Intent(this, ThirdActivity.class); 

Intent i = new Intent(a, ThirdActivity.class);  
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!