不能离开我的应用程序

时间:2012-03-26 17:54:27

标签: android android-activity

我有两项活动。首先,我从第一个开始进入第二个活动,所以:

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

关闭我的应用程序,但打开第二个活动。 求救!

3 个答案:

答案 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