1

手机后退按钮让我感到困惑。这个问题被问了很多次,但我没有得到解决方案。所以按照我的要求再次询问。

我有一个主屏幕活动它调用 3 个活动 - 每个活动又调用 2 个活动。

假设我以这种方式导航

Home > Act1 > SubAct1a > SubAct1b > Home(通过 Home 按钮)> Act2 > Home > Act3

现在在 Act3 中,当我按下手机的 BACK 按钮时,我回到了主页。此时我的要求是当我再次按下返回按钮时,它应该退出应用程序。但是会发生什么事情是这样的

Act2 > 主页 > SubAct1b > SubAct1a > Act1 > Home > 退出

因此,用户在退出应用程序之前多次按下 BACK。

按 HOME 键是一个选项,但我希望 BACK 也能正常工作。

我在 HOME 活动中有这段代码 - 但它根本不起作用

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        finish();
        System.exit(0);
    }

    return super.onKeyDown(keyCode, event);
}

它只是返回到之前的活动。

4

4 回答 4

2

你应该返回true,告诉系统你已经处理了这种情况,

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        finish();
        System.exit(0);
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

当您开始家庭活动时,请尝试设置清除顶部标志...

Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
于 2012-10-29T08:21:47.573 回答
1

尝试将其添加到您的 onCreate()

Intent intent = new Intent(getApplicationContext(), Home.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
于 2012-10-29T08:34:03.347 回答
0

当您从一个 Activity 转到另一个 Activity 时,请完成上一个 Activity。然后

如果用户按下后退按钮并完成当前活动,那么我认为您的问题将得到解决。

Intent intent = new Intent(currentclass.this, Act1.class)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
finish();

最后

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        finish();
    }

    return true;
}
于 2012-10-29T08:38:40.660 回答
0

尝试这个:

@Override
public void onBackPressed()
{
    Intent i=new Intent(currentclass.this,Home.class)
    startActivity(i);
    finish();
    super.onBackPressed();
}
于 2012-10-29T08:28:13.637 回答