如何使用代码恢复先前的活动?

3
我正在使用两个活动。第一个活动包含一些编辑文本,当提交按钮被点击时,第二个布局会被显示出来。
因此,第一个活动处于暂停状态,当我从第二个布局中按下返回按钮时,第一个布局会恢复(即之前的状态被恢复)。
现在,我需要在屏幕上的自己的返回按钮中实现返回按钮的操作。
我尝试了在按钮单击事件中使用onFinish(),但之前的状态没有恢复。
我也尝试过使用startActivityForResult。
还有其他解决方案吗? 请分享你的想法。 提前致谢。
5个回答

3

调用您的Activity的finish()方法。这将关闭第二个Activity并恢复您之前的Activity。


1
这将不会自动恢复第一个活动的状态。 - Manfred Moser
它肯定会恢复 Activity 栈中的最后一个 Activity。如果您在调用第二个 Activity 时没有关闭第一个 Activity,那么它不会自动恢复第一个 Activity 的状态(在这种情况下,您将不得不触发一个新的 Intent 并手动恢复其状态)。 - Arnab Chakraborty
1
@Aki,我找到了解决方案。你是对的,问题出在功能流程上。 - arnp
第一个活动将调用onPause...如果您在onPause中没有持久化某个阶段(例如,列表视图中的位置),并在onResume中恢复...当您返回时,它将丢失。 - Manfred Moser
列表视图中的位置确实会保留。 - Arnab Chakraborty

0

backButton.setOnClickListener(v -> { Intent intent = new Intent(CurrentActivity.this, PreviousActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(intent); }); 对我有用,finish(); 没有恢复之前的活动,而是重新启动了它。


0

你必须确保第一个活动在 onPause 中以某种方式保存其状态(例如使用 bundles、数据库、静态变量、应用程序类等),然后在 onResume 中从该持久化状态重新设置状态。


是的,第一个活动会保存状态。当我按下手机返回按钮时,我能够恢复第一个活动。 - arnp
只有在第一个活动在onPause中正确保存状态时,才会被保留。例如,如果它在listview上有一个当前位置,并且您没有在onResume中保存和恢复位置,则该位置将丢失。 - Manfred Moser

0

我认为从Arnab的答案中调用finish()不是正确的做法。你应该放置:

intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

使用startActivity()之前,而不是finish();


True @IDontEvenKnow。希望FLAG_ACTIVITY_REORDER_TO_FRONT可以保持第二个活动仍然存在。顺便说一下,这个问题是我在开始学习Android时提出的。我想要的只是在按钮点击时执行通常的返回操作。我们可以使用“finish()”或“onBackPressed()”来解决我的问题。如果我有错或不清楚,请告诉我。 - arnp

0

嘿,试着保存状态

  @Override
protected void onSaveInstanceState(Bundle outState) {
    // TODO Auto-generated method stub
    super.onSaveInstanceState(outState);
}

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