我想将数据从网络加载到片段中。在里面Activity
我有一个ViewPager
,我正在使用一个FragmentPagerAdapter
来提供片段。问题是:
如何从活动中检测到来自 ViewPager 的所有片段都已创建并准备好显示数据。我如何通知片段,应该显示活动内部的数据?
我想将数据从网络加载到片段中。在里面Activity
我有一个ViewPager
,我正在使用一个FragmentPagerAdapter
来提供片段。问题是:
如何从活动中检测到来自 ViewPager 的所有片段都已创建并准备好显示数据。我如何通知片段,应该显示活动内部的数据?
如何从活动中检测到来自 ViewPager 的所有片段都已创建并准备好显示数据。
这听起来有点奇怪。您Activity
不需要知道何时ViewPager
初始化所有片段(因为用户实际上只会看到一个片段(如果您不弄乱,则每边都可以使用一个片段setOffScreenPageLimit()
),这没有任何意义更新其余部分)。
我如何通知片段,应该显示活动内部的数据?
您的片段可以将自己注册为Activity
数据加载事件的侦听器。Activity
它将完成获取数据的工作,然后在所有已注册的片段上调用更新方法(应该将其存储在其中以WeakReferences
避免在我们不应该保留它们时保留它们)。主要问题是您可能会尝试更新项目
另一种 hacky 方法是使用类似的东西Activity
:
// get the current fragment(add/subtract one for the available fragments on each side of the curently visible
Fragment f = getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.ViewPagerId + ":" + mViewPager.getCurrentItem()); one.)
f.update();
其余的片段将在重新创建时检查是否有可用的新数据。