Android回到之前的Activity

时间:2013-03-15 11:07:05

标签: android android-intent android-activity

我有两项活动MainActivityNextActivity。从MainActivity开始,我可以转到NextActivity,然后使用Intent返回MainActivity。但是然后会调用OnCreate和其他东西,就像所有东西都被重新初始化一样。我想回到状态,就像我进入NextActivity之前一样。

我意识到,如果我使用手机上的物理后退按钮,就可以实现这一目标。

那么如何像返回按钮一样返回活动?

PS。 我测试finish()但没有帮助。

2 个答案:

答案 0 :(得分:25)

您可以致电onBackPressed()而不是使用Intent返回MainActivity ..

例如:

public void onClick() {
    onBackPressed();
}

注意:finish()应该完全符合您的要求..

答案 1 :(得分:4)

假设您有两个活动A和B.您从A导航到B. A转到后台。

B放在后面堆叠上,B取得焦点。当您单击后退按钮时,活动B弹出后退堆栈。活动A已恢复。

注意:可以在后台同时保存多个任务。但是,如果用户同时运行许多后台任务,系统可能会开始销毁后台活动以恢复内存,从而导致活动状态丢失。请参阅以下有关活动状态的部分。

http://developer.android.com/training/basics/activity-lifecycle/starting.html。一旦被破坏的活动必须重新创建。当屏幕方向改变时,活动会被破坏并重新创建。

http://developer.android.com/training/basics/activity-lifecycle/starting.html

http://developer.android.com/guide/components/tasks-and-back-stack.html。你应该看一下后栈是如何工作的。

在你的情况下,完成应该适合你(通过按后退按钮)。

注意:系统在除了一个之外的所有情况下调用onPause()和onStop()之后调用onDestroy():当你从onCreate()方法中调用finish()时。

假设您有第三个活动C,并且您想转到活动A.

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

}

return super.onKeyDown(keyCode, event);
}

 public void onBackPressed() {
Intent myIntent = new Intent(ActivityC.this, MainActivity.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);// clear back stack
startActivity(myIntent);
finish();
return;
}