【问题标题】:Android - Query regarding activity lifecycle on changing screen orientationAndroid - 查询有关更改屏幕方向的活动生命周期
【发布时间】:2015-04-18 11:40:28
【问题描述】:

编辑:这个问题的解决方案是 - Android - Query regarding activity lifecycle on changing screen orientation

我正在开始 Android 开发,并面临有关活动生命周期的问题。我有一个Activity A 在其onCreate() 方法中调用Activity BActivity B 在相对布局中有一个自定义网格视图)。

Activity B 中,如果屏幕方向保持不变并且按下后退按钮,则按预期转到Activity AonResume() 方法。但是,在Activity B 中更改屏幕方向时,在稍后按下返回按钮时,它会转到Activity AonCreate() 方法,从而重新创建Activity B(因为Activity A 在其onCreate() 中调用B) .只有按两次后退按钮,它才会返回到Activity AonResume() 方法。如何确保在更改方向时,只需按一次返回按钮即可转到Activity AonResume()

我试过包括:

android:configChanges="keyboardHidden|screenSize|orientation"

在清单中的Activity B 中,因此这避免了在更改方向时调用Activity BonCreate,但它仍然不能解决我的问题。

【问题讨论】:

  • 启动活动 B 以获取活动 A 的结果。
  • 活动 A 是基础,所有 onResume 和 onBack 都与它一起工作,结束。最重要的是,您启动 Activity B,它是 onResume 和 onBack 类。轮换时,会重新创建 B,而不是 A,因为您在 B 中。我认为您必须更改启动 B 的方式。

标签: android android-activity activity-lifecycle


【解决方案1】:

活动 A 是基础,所有 onResume 和 onBack 都与它一起工作,结束。 最重要的是,您启动 Activity B,它是 onResume 和 onBack 类。 轮换时,B 被重新创建,而不是 A,因为你在 B 中。 我认为你必须改变你开始 B 的方式。 或者 B 的 onResume,finish() B。然后在 onResume A 中重新开始 B。

【讨论】:

  • 感谢您的回答,我已针对我的问题发布了一个可行的解决方案。我还需要将 android:configChanges 添加到 Activity A。
【解决方案2】:

我找到了解决方案。由于在 Activity B 中屏幕方向发生了变化,因此正在重新创建 Activity A(与之前的方向不同)。所以所需要的只是添加

android:configChanges="keyboardHidden|screenSize|orientation"

到清单中的 Activity A。

【讨论】:

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