【问题标题】:Activities lifecycle in AndroidAndroid 中的活动生命周期
【发布时间】:2012-01-27 04:06:55
【问题描述】:

我有一个包含三个活动的应用程序,我们称它们为 A、B 和 C 以表示约定。

A 使用 StartActivity 调用 B。

当用户点击返回/取消按钮时,我必须调用Activity C,所以我在Activity B的OnPause中实现了调用Activity C,我需要从Activity C返回,所以我用startActivityForResult调用Activity C并实现了方法Activity B 中的 onActivityResult 获取返回。

一切正常,但是当活动 C 完成时,应用程序将返回活动 A,我需要活动 B。

我必须再次显式调用 Activity B,否则我做错了什么?

【问题讨论】:

    标签: android


    【解决方案1】:

    我真的不确定你想通过这种行为实现什么。无论如何,你从 C 回到 A,因为你按下了 Back 键,并且没有覆盖它在 onBackPressed() 中的行为。所以当前的 Activity (B) 刚刚完成,因此 onPause() 被调用,所以 C 开始了。但是当 C 变为活动状态时,Activity 堆栈中将只有 A 和 C。

    您需要在 Activity B 中覆盖 onBackPressed(),然后从那里调用 C,忘记 onPause()。

    【讨论】:

      【解决方案2】:

      您不应该在点击返回按钮时调用另一个活动。后退按钮将从堆栈中弹出活动(B)。当您从活动 B 中单击返回时,Android 将完成该活动并将其终止。这是一个标准的工作流程,最好不要搞砸。在活动B中放置一些按钮并从那里调用C以获得结果,然后您将能够在B活动中获得结果。

      【讨论】:

        【解决方案3】:

        当你到达活动B中的onPause()时,它已经关闭了,所以当你返回它时,它就会消失。
        正如您所说,您可以在完成后从 C 启动 B,或者在 B 的 onBackPressed() 中启动 C(然后从该方法返回而不调用 super 方法)。这会覆盖关闭 Activity 的默认操作。

        【讨论】:

          猜你喜欢
          • 2013-01-13
          • 2011-12-18
          • 1970-01-01
          • 2014-09-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多