我有两项活动。首先,我从第一个开始进入第二个活动,所以:
Intent i = new Intent(this, SecondClass.class);
startActivity(i);
但是特殊条件要求我重新启动第一个活动,因为我以相同的方式返回它:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//...
Intent i = new Intent(this, FirstClass.class);
startActivity(i);
super.onKeyDown(keyCode, event);
return true;
}
return super.onKeyDown(keyCode, event);
}
因为我不能离开第一个活动: 如果我使用
@Override
public void onBackPressed()
{
finish();
System.exit(0);
return;
}
或
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
System.exit(0);
return super.onKeyDown(keyCode, event);
}
return super.onKeyDown(keyCode, event);
}
关闭我的应用程序,但打开第二个活动。 求救!
答案 0 :(得分:2)
当您进入第二个活动时,请关闭第一个活动
Intent i = new Intent(this, SecondClass.class);
startActivity(i);
finish(); // Close your first activity
现在,当您进入第二项活动时,您可以通过此
重新开始第一项活动@Override
public void onBackPressed()
{
Intent i = new Intent(this, FirstClass.class);
startActivity(i);
finish(); // Close your second activity
}
就这么简单:)
答案 1 :(得分:1)
在你开始一个新活动之后调用finish()(并且只在你开始一个新的活动之后)并让android完成剩下的工作。
Intent i = new Intent(this, SecondClass.class);
startActivity(i);
finish();
它将启动第二个活动并关闭第一个活动。如果您现在按后退键,它将带您进入上次打开的活动(不一定是您的应用程序中的一个)
答案 2 :(得分:0)
我认为你不应该这样做,我的意思是你自己通过后退按钮开始和完成活动,因为Android平台已经为你提供了一堆活动,改变了堆栈中活动的行为以及它们的实例那么你可以使用AndroidManifest.xml来Activity Launch Mode