安卓返回到上一个活动

6
我有两个活动,MainActivityNextActivity。 我可以从MainActivity进入NextActivity,然后使用Intent返回MainActivity。 但是,OnCreate和其他内容将被调用,并且就像重新初始化一切一样。 我希望回到之前进入NextActivity时的状态。
我意识到,如果我在手机上使用物理返回按钮,正好可以实现这个目标。
那么如何像使用返回按钮一样返回到一个活动呢?
附注: 我尝试了finish(),但没有帮助。

3
你真的测试完成了吗?怎么测试的?就是这样。 - lelloman
2
finish()是正确的方法。如果它没有起作用,可能是因为你的内存不足,导致Android需要重建你的Activity。 - Zielony
我认为没有任何保证你之前的活动仍然可用。最好使用首选项或某种存储保存状态,以防活动被垃圾回收。 - Davos555
如果按返回按钮可以实现你想要的效果,不要创建一个新的意图来返回。从你的第一个活动中删除finish(),在第二个活动中使用调用finish()来返回。 - akaya
没问题,我按错了一个小按钮,应该按大按钮调用finish()方法。(所以我一直在按那个小按钮调用intent,我的错,抱歉! :) ) - Jonas
2个回答

25

你可以使用 onBackPressed() 方法直接返回到 MainActivity,而不必使用 Intent

例如:

public void onClick() {
    onBackPressed();
}
注意:finish() 应该完全按照您想要的方式执行。

这是答案 @Jonas - Aashish Bhatnagar

4
假设您有两个活动A和B。您从A导航到B。A进入后台。
B被放在后台堆栈中,B获得焦点。当您点击返回按钮时,活动B从后台堆栈中弹出。活动A恢复。
注意:可以同时在后台保留多个任务。但是,如果用户同时运行许多后台任务,则系统可能开始销毁后台活动以恢复内存,从而导致活动状态丢失。请参见有关Activity状态的以下部分。 http://developer.android.com/training/basics/activity-lifecycle/starting.html。一旦销毁活动就必须重新创建。屏幕方向更改时,活动将被销毁并重新创建。 http://developer.android.com/training/basics/activity-lifecycle/starting.htmlhttp://developer.android.com/guide/components/tasks-and-back-stack.html。您应该查看后退堆栈的工作原理。
在您的情况下,通过按返回按钮,finish应该适用于您。
注意:系统在除一种情况外,都会在调用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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接