将变量从ViewPager活动传递到片段

时间:2013-09-19 17:28:04

标签: android android-fragments android-viewpager

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

或者,您可以使用Loader并在Fragment中实现LoaderManager.LoaderCallbacks以从数据库中返回数据,但只有在设置数据后才初始化它。

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

有很多方法可以解决这个问题。是的,Fragments参数在创建后无法传递,除非您在Fragment.setArguments附加Activity之前调用{{1}}。

<强>来源

Fragment.instantiate

Fragment.setArguments