【问题标题】:Android: Return to previous activity without calling finish()Android:返回上一个活动而不调用finish()
【发布时间】:2009-10-26 11:39:16
【问题描述】:

我有一个包含很多活动的 android 应用程序,可以想象一本书,其中每一页都是一个新活动。用户可以在每个活动中进行更改,例如用不同颜色的标记突出显示某些文本等,只要应用程序保持活动状态,我就会记住这些信息至关重要(而且我不想/不需要记住任何这不是)。据我了解,存储此类信息的最佳机制是通过onSaveInstanceState(Bundle outState)onCreate(Bundle)/onRestoreInstanceState(Bundle),而不是通过偏好机制。我唯一的问题是用户可以向后导航到以前的页面(活动),我知道实现这一点的唯一方法是调用finish(),这当然会在不调用onSaveInstanceState(Bundle outState) 的情况下杀死当前活动,即使它确实调用了它,下次我启动代表该页面的活动时,它将是一个全新的实例。所以我的问题是:有没有办法在不调用finish() 的情况下返回上一个活动?或者,有没有更好的方法来保存这些信息?也许通过静态变量?

谢谢!

附: 我知道我也可以以不同的方式实现我的应用,这样不是每个页面都有自己的活动,但这不是我要寻找的答案。

【问题讨论】:

    标签: android


    【解决方案1】:

    尝试使用带有 Intent.FLAG_ACTIVITY_CLEAR_TOP 等标志的 startActivity()。 你可以在这里阅读完整的故事: http://developer.android.com/reference/android/content/Intent.html#setFlags(int)

    【讨论】:

      【解决方案2】:

      我遇到了完全相同的问题,经过反复思考和尝试,恕我直言,我找到了最可行的解决方案。我继承了 Activity 并添加了一个静态方法来杀死如果仅存在。因此,与其在活动退出时终止活动。每当它再次被调用时,我都会杀死它。例如,

      MyActivity.killIfExists();
      startActivity(new Intent(this, MyActivity.class));
      

      因此,应用程序将始终是单例的,并使用 onSaveInstanceState 保存其状态。

      【讨论】:

        猜你喜欢
        • 2013-04-23
        • 2021-07-20
        • 2011-08-25
        • 1970-01-01
        • 2011-05-01
        • 1970-01-01
        • 2012-11-23
        • 2013-10-27
        相关资源
        最近更新 更多