0

我试图在不使用捆绑包的情况下做到这一点。我试图避免这种情况的原因是因为数据是从在线数据库中提取的,我不希望片段在等待获取数据时不加载。据我所知,如果在创建任何片段之前数据已准备好发送,我只能执行捆绑参数。

这会导致问题,因为在创建 ViewPager 之前不会从数据库中提取数据。我可以成功传递变量,但就像我说的那样,数据不是瞬间存在的。这最终通过捆绑变量发送零值。

假设您在创建片段后仍无法传递捆绑包,我是否不正确?除了 Bundles,将变量从 ViewPager 发送到 Fragment 的最佳方式是什么?将数据存储在缓存中是一个不错的选择吗?

4

2 回答 2

0

您可以强制Activity转换为Fragment.getActivity然后为您的数据调用 getter。

或者,您可以在您的数据库中使用Loader并实现LoaderManager.LoaderCallbacksFragment来返回数据,但只有在设置数据后才对其进行初始化。

我想您也可以显示某种 loading Fragment,然后在设置数据后将其替换为另一个。在这种情况下,您可以使用 a Bundle

有很多方法可以解决这个问题。是的,Fragments参数不能在创建后传递,除非你Fragment.setArguments在它附加到Activity.

资源

片段.实例化

片段.setArguments

于 2013-09-19T18:00:02.487 回答
0

从数据库中检索到所述数据后,您可以在片段中设置要从活动中调用的方法。然后在您的片段方法中,您可以将它加载到您需要的任何地方,无论您需要什么。

您唯一需要关心的是方法的静态上下文。

于 2013-09-19T17:45:03.507 回答