我有两项活动MainActivity
和NextActivity
。从MainActivity
开始,我可以转到NextActivity
,然后使用Intent
返回MainActivity
。但是然后会调用OnCreate
和其他东西,就像所有东西都被重新初始化一样。我想回到状态,就像我进入NextActivity
之前一样。
我意识到,如果我使用手机上的物理后退按钮,就可以实现这一目标。
那么如何像返回按钮一样返回活动?
PS。
我测试finish()
但没有帮助。
答案 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;
}