我试图在不使用捆绑的情况下执行此操作。我试图避免这种情况的原因是因为数据是从在线数据库中提取的,我不希望在等待获取数据时不加载这些片段。据我所知,如果在创建任何片段之前数据已准备好发送,我只能执行bundle参数。
这会导致问题,因为在创建ViewPager之前不会从数据库中提取数据。我可以成功传递变量,但就像我说的那样数据不是即时的。这最终会通过bundle变量发送零值。
假设在创建片段后仍无法传递包,我是否错误?除了Bundles之外,从ViewPager向Fragment发送变量的最佳方法是什么?将数据存储在缓存中是一个不错的选择吗?
答案 0 :(得分:0)
一旦从数据库中检索到所述数据,就可以在片段中设置一个从活动中调用的方法。然后在您的片段方法中,您可以将它加载到您需要的地方,无论您需要什么。
唯一需要关注的是方法的静态上下文。
答案 1 :(得分:0)
您可以将Activity
转换为Fragment.getActivity
,然后为您的数据调用getter。
或者,您可以使用Loader
并在Fragment
中实现LoaderManager.LoaderCallbacks以从数据库中返回数据,但只有在设置数据后才初始化它。
我想您也可以显示某种加载Fragment
,然后在设置数据后将其替换为另一种加载。在这种情况下,您可以使用Bundle
。
有很多方法可以解决这个问题。是的,Fragments
参数在创建后无法传递,除非您在Fragment.setArguments
附加Activity
之前调用{{1}}。
<强>来源