gpt4 book ai didi

android - 处理 android 中的运行时方向变化

转载 作者:行者123 更新时间:2023-11-29 17:45:56 25 4
gpt4 key购买 nike

在我的应用程序中,我有 Activity A。单击此 Activity 上的按钮后,应用会启动 Activity B。在 Activity B 的 onCreate() 中,我添加了一个 fragment 。每次创建 fragment 时,它都会使用 AsyncTask 从外部服务器加载一个列表。

我如何在配置更改时保留此列表?我已经寻找了许多解决方案,但许多人建议在 list 中使用“android:configchanges”,我完全反对使用。许多人建议并且我也阅读了它 - 使用 setRetainInstance (true) 在将保留 fragment 的 fragment 中。

我尝试实现它但失败了。许多教程在方向更改后使用 findFragmentByTag 检查 fragment ,但在我的情况下它总是返回 null。有人可以发布关于如何使用 RetainFragments 的正确教程或正确答案吗?

此外,我正在调用 AsyncTask 以在 Fragment 的 onActivityCreated 方法中加载列表。根据 android 文档,当使用 setRetainInstance(true) 时,将不会调用 onCreate(Bundle),因为不会重新创建 fragment 。onAttach(Activity) 和 onActivityCreated(Bundle) 仍将被调用。

那我应该在onCreate方法中调用AsyncTask吗?

最佳答案

我不确定你是否还记得这个:

注意:每次用户旋转屏幕时,您的 Activity 都会被销毁并重新创建。当屏幕改变方向时,系统会销毁并重新创建前台 Activity,因为屏幕配置已更改并且您的 Activity 可能需要加载替代资源(例如布局)。

强烈推荐这篇文章:
使用 fragment 处理配置更改
http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html

注意:为了让 Android 系统恢复 Activity 中 View 的状态,每个 View 都必须有一个唯一的 ID,由 android:id 属性提供。

来源:http://developer.android.com/training/basics/activity-lifecycle/recreating.html

关于android - 处理 android 中的运行时方向变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26746509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com