6

我有两个活动,MainActivityNextActivity。从MainActivityI can go toNextActivity然后使用Intentto go back to MainActivity。但是随后OnCreate会调用其他东西,就像一切都重新初始化一样。我想回到我进入之前的状态NextActivity

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

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

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

4

2 回答 2

25

你可以只打电话onBackPressed()而不是使用Intent回到MainActivity..

例如:

public void onClick() {
    onBackPressed();
}

注意:finish()应该完全按照您的意愿行事..

于 2013-03-15T11:10:09.820 回答
4

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

B 被放在后面的堆栈上,B 获得焦点。当您单击后退按钮时,活动 B 会从后退堆栈中弹出。恢复活动 A。

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

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

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 并且你想去 Activity 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;
}
于 2013-03-15T11:24:11.030 回答