Android:手机后退按钮

时间:2012-10-29 08:19:04

标签: android

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

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

假设我以这种方式导航

主页> Act1> SubAct1a> SubAct1b>主页(通过主页按钮)> Act2>主页> ACT3

现在在Act3中,当我按下电话BACK按钮时,我到了Home。此时我的要求是当我再次按下BACK按钮时,它应该退出应用程序。但它会发生什么呢?

Act2>主页> SubAct1b> SubAct1a> Act1>主页> EXIT

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

按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 个答案:

答案 0 :(得分:1)

尝试在onCreate()

中添加此内容
Intent intent = new Intent(getApplicationContext(), Home.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

答案 1 :(得分:0)

您应该返回 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);

答案 2 :(得分:0)

试试这个: -

@Override
public void onBackPressed() {
             Intent i=new Intent(currentclass.this,Home.class)
    startActivity(i);
     finish();
    super.onBackPressed();
}

答案 3 :(得分:0)

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

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

Intent i=new Intent(currentclass.this, Act1.class)
i.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;
}