Android:覆盖后退按钮

时间:2011-12-05 15:53:34

标签: android

我有一个主活动,然后是一个ListActivity来选择要显示的项目,然后是第三个活动来显示所选项目。当用户按下按钮时,我希望他回到主要活动,而不是listActivity。

我该怎么做?

5 个答案:

答案 0 :(得分:3)

在第3个活动中覆盖onBack并使用Intent.FLAG_ACTIVITY_CLEAR_TOP

@Override
public void onBackPressed() {
    Intent intent = new Intent(this, MainActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
}

答案 1 :(得分:2)

有几种方法可以做到这一点。可能最简单的就是打电话

finish();
在您致电startActivity开始第三项活动后,立即在ListActivity中

这将实现您想要的效果,而无需覆盖所需的后退按钮。

答案 2 :(得分:0)

查看您在创建新活动时使用的意图标记,例如FLAG_ACTIVITY_CLEAR_TASK和其他类似的活动。

此外,这个其他问题可能有所帮助:Finish parent and current activity in Android

答案 3 :(得分:0)

在后退按钮中,您可以使用意图启动主要活动

Intent i = new Intent(context, Main.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(i);

为什么设置FLAG_ACTIVITY_CLEAR_TOP?

  

如果已设置,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是会关闭其上的所有其他活动   并且此Intent将作为新的Intent传递到(现在在顶部)旧活动。

答案 4 :(得分:0)

您可以使用onKeyDown

public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK) {

                 // start your main Activity  with flag FLAG_ACTIVITY_SINGLE_TOP
                return true;
            }


        return super.onKeyDown(keyCode, event); 
    }
只有最新版本的API支持

onBackPressed()