我有一个主活动,然后是一个ListActivity来选择要显示的项目,然后是第三个活动来显示所选项目。当用户按下按钮时,我希望他回到主要活动,而不是listActivity。
我该怎么做?
答案 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()
。