我有“新游戏”和“恢复”按钮的MenuActivity。 “新游戏”启动FireRoomActivity。
public void newGame(View view){
Intent intent = new Intent(this, FireRoomActivity.class);
this.finish();
startActivity(intent);
}
在FireRoomActivity中,onBackPressed被覆盖以返回MenuActivity。
@Override
public void onBackPressed() {
super.onBackPressed();
Intent inMain=new Intent(this, MenuActivity.class);
startActivity(inMain);
}
MenuActivity中的“恢复”按钮应该恢复FireRoomActivity.But这只是退出应用程序。
public void resume(View view){
this.finish();
}
Q1)我做错了什么?
Q2)如果我添加第三个活动“ThreeActivity”并从FireRoomActivity启动它(完成FireRoomActivity),并在这个“ThreeActivity”覆盖onBackPressed转到MenuActivity,我该怎么办呢?
我是android生命周期的新手,所以我很感激详细的回复
答案 0 :(得分:2)
1)你正在搞乱自然秩序。没有必要在“新游戏”方法中调用“完成”。
将活动留在堆栈上,以便在按后退键时可以返回到该活动。然后,当按下后退键时,您不需要启动新活动,因为您已经返回到已有的MenuActivity。
您的简历方法是调用完成,因此关闭菜单。而不是“完成”菜单,输入你的代码来恢复游戏。
2)了解活动生命周期。一旦你明白这一点,你就会更好地处理这个问题。如果您要返回活动,则无需在启动另一个活动时完成活动。把它们想象成堆栈。您将活动放在堆栈上,后退按钮将它们再次弹回。只有当您完成一项活动并且永远不想再看到它时,您才能完成一项活动。
答案 1 :(得分:1)
**Try This**
======================
public void onBackPressed() {
Intent i = new Intent(getApplicationContext(), MenuActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
finish();
}
答案 2 :(得分:0)
尝试:
@Override
public void onBackPressed() {
Intent inMain=new Intent(this, MenuActivity.class);
startActivity(inMain);
}
onBackPressed()本身完成了活动。在这种情况下,如果您按下FireRoomActivity中的“后退”按钮,它将始终暂停。所以如果你想完成它,你需要调用finish();
答案 3 :(得分:0)
删除onBackPressed重写方法中的super.OnBackPressed()
。
如果不起作用,请尝试:
使用单击“恢复按钮”
的语法启动FireRoomActivityIntent i = new Intent(getActivity(), FireRoomActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
startActivity(i);
答案 4 :(得分:0)
在“三项活动”中覆盖此内容
@Override
public void onBackPressed() {
Intent intent=new Intent(this, MenuActivity.class);
startActivity(intent);
}
有关推荐this链接
的详细信息