如何改变android中的活动?
如何改变android中的活动?,android,android-activity,Android,Android Activity,我正在做一个简单的游戏。我有三项活动。第一个活动是主菜单(第一个活动类)。 第一个活动具有以下代码: Intent i = new Intent(this, SecondActivity.class); startActivityForResult(i, ACTIVITY_CREATE); setContentView(new MovementView(this)); 它调用第二个活动,其中第二个活动具有以下代码: Intent i = new Intent(this, SecondAc
我正在做一个简单的游戏。我有三项活动。第一个活动是主菜单(第一个活动类)。
第一个活动具有以下代码:
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, ACTIVITY_CREATE);
setContentView(new MovementView(this));
它调用第二个活动,其中第二个活动具有以下代码:
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, ACTIVITY_CREATE);
setContentView(new MovementView(this));
MovementView类扩展了SurfaceView。MovementView类是我编写所有游戏代码的地方
所以我想当lives==0时,它变为第三个。我该怎么做?我尝试过将代码与FirstActivity的类相似,但似乎不起作用。
如果我把
((活动)getContext()).finish()代码>
它只是跳回第一个活动,但这不是我需要的,我需要它去第三个活动课。因为你用开始活动2。ForResult()
,你也可以在完成之前用设置结果(游戏结束)
设置第二个活动的结果因此,Activity1在onActivityResult()
中启动Activity3,前提是当显示Activity3时,Activity2不再存在
RE:@Yoni Samlan,如果我把
Intent i = new Intent(this, ThirdActivity.class);
startActivityForResult(i, ACTIVITY_CREATE);
它显示第一行的构造函数Intent(MovementView,Class)未定义,第二行的MovementView类型的方法startActivityForResult(Intent,int)未定义
您应该将Activity
作为第一个参数而不是视图传递,并调用Activity.startActivityForResult()
。。。
因此,请将您的活动
传递给您的视图,并按说明在视图中使用它。因为您使用启动活动2。对于result()
,您还可以设置第二个活动的结果(在完成之前使用设置结果(游戏结束)
)因此,Activity1在onActivityResult()
中启动Activity3,前提是当显示Activity3时,Activity2不再存在
RE:@Yoni Samlan,如果我把
Intent i = new Intent(this, ThirdActivity.class);
startActivityForResult(i, ACTIVITY_CREATE);
它显示第一行的构造函数Intent(MovementView,Class)未定义,第二行的MovementView类型的方法startActivityForResult(Intent,int)未定义
您应该将Activity
作为第一个参数而不是视图传递,并调用Activity.startActivityForResult()
。。。
因此,请将您的活动
传递给您的视图,并按说明在视图中使用它。您尝试它时,它不起作用,因为您试图从视图而不是活动中创建意图。您需要使用视图的上下文(getContext()
),而不是this
。您还需要使用startActivity
而不是startActivityForResult
,除非您实际计划使用结果(尽管如果您仅从自己的代码使用活动,则将上下文转换为活动应该是相当安全的).当您尝试它时,它不起作用,因为您试图从视图而不是活动创建意图。您需要使用视图的上下文(getContext()
),而不是this
。您还需要使用startActivity
而不是startActivityForResult
,除非您实际计划使用结果(尽管如果您仅从自己的代码使用活动,则将上下文转换为活动应该是相当安全的)。使用MovementView构造函数时,您必须记住活动,屠用它来启动第三个活动
private Activity a;
public MovementView(Acitivity a) {
this.a = a;
// your code
}
在MovementView中的某个位置,替换
Intent i = new Intent(this, ThirdActivity.class);
借
使用MovementView构造函数,您必须记住活动,然后使用它启动第三个活动
private Activity a;
public MovementView(Acitivity a) {
this.a = a;
// your code
}
在MovementView中的某个位置,替换
Intent i = new Intent(this, ThirdActivity.class);
借
我终于可以回答了,不得不等24小时。
因此,最终,我成功实现的唯一变体如下:
第一个活动类:
点击
private void startGame() {
Intent i = new Intent(this, SecondActivity.class);
startActivity(i);
}
第二类活动:
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类:
if (lives == 0){
updateThread.setRunning(false);
((Activity)getContext()).finish();
}
我不知道onDestroy和onStop之间的区别,但两者都有效。
唯一令人不快的是,当lives==0时,它返回到FirstActivity(大约半秒),然后返回GameOver类。最后我可以回答,不得不等待24小时。
因此,最终,我成功实现的唯一变体如下:
第一个活动类:
点击
private void startGame() {
Intent i = new Intent(this, SecondActivity.class);
startActivity(i);
}
第二类活动:
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类:
if (lives == 0){
updateThread.setRunning(false);
((Activity)getContext()).finish();
}
我不知道onDestroy和onStop之间的区别,但两者都有效。
唯一令人不快的是,当lives==0时,它会返回到FirstActivity(大约半秒),然后返回到GameOver类。“我尝试过将代码放在类似FirstActivity的类中,但似乎不起作用。”--如果放在ThirdActivity.class中,它应该会起作用。你写了什么代码,什么“不起作用”?发生了什么事?@Yoni Samlan,如果我把Intent I=newintent(this,ThirdActivity.class);startActivityForResult(i,活动\创建)代码>它显示第一行的构造函数意图(MovementView,Class)未定义,第二行的类型MovementView的方法startActivityForResult(Intent,int)未定义。您似乎是从MovementView中调用新的意图(this,GameOver.Class),因此“this”是一个视图而不是上下文。您需要在构造函数中使用传递给MovementView的活动。“我尝试过将代码放在类似FirstActivity的类中,但似乎不起作用。”--如果放在ThirdActivity.class中,它应该会起作用。你写了什么代码,什么“不起作用”?发生了什么事?@Yoni Samlan,如果我把Intent I=newintent(this,ThirdActivity.class);startActivityForResult(i,活动\创建)代码>它显示第一行的构造函数意图(MovementView,Class)未定义,第二行的类型MovementView的方法startActivityForResult(Intent,int)未定义。您似乎正在调用新的意图(此,GameO