gpt4 book ai didi

Android 服务 > Activity > 带有 ViewPager 的 fragment

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:18 25 4
gpt4 key购买 nike

首先,我要声明我已经为这个问题寻找解决方案三天了,这可能意味着我没有问正确的问题或者没有使用好的方法。如果有的话,请指导我正确的方向。

情况是这样的:我有一个 Activity 和一个绑定(bind)的 ServiceService 保存一些数据并根据需要处理这些数据,同时发布包含一些信息的持久(持续)通知。 ActivityViewPager 中有三个 Fragment,显示由 Service 处理的数据。

Fragments 是一个List Fragment,显示可用的 Activity 数据条目,一个Details Fragment,显示每个数据的详细信息, Parameters Fragment,用户可以在其中修改数据的处理方式。

[服务] <-> ([ Activity ] -> [ViewPager([列表], [详细信息], [参数])])

一切正常。我的 Activity 绑定(bind)到 Service,之后创建了 ViewPager,然后 Fragments 通过 获取信息>接口(interface)

有趣的部分来了......屏幕旋转!

由于 Service 异步绑定(bind),当用户旋转屏幕时 Fragments 不再有数据,因为 Activity 正在绑定(bind)服务由于 ViewPager,它们已经存在并且没有重新创建。

我一直在努力解决这个问题,但似乎我没有解决它的知识。我试过对 fragment 进行静态引用,在服务反弹之前设置它们,但我无法获得稳定的解决方案。

我会在 list 中使用 android:configChanges,但每个方向都有不同的布局。

再说一次,如果我使用的方法不好,请指导我!

最佳答案

当我不知道你的代码但大声思考时很难提出建议......

你能不能有一个永远不会显示(即 headless )并且设置了 setRetainInstance(true) 的“工作 fragment ”,这样它就不会丢失你设置的任何状态。

您的工作 fragment 将绑定(bind)到服务而不是 Activity 并维护对它的引用。

如果您需要与您的 Activity 通信,您可以使用回调来实现。

您的其他 fragment 可以与 worker 而不是 Activity 通信。

此过程基本上会使 Activity 只不过是一个外壳,其余组件都托管在该外壳中。旋转不会丢失任何东西,因为所有数据都保存在保留的 fragment 中。

关于Android 服务 > Activity > 带有 ViewPager 的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20662735/

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