0

我想将数据从网络加载到片段中。在里面Activity我有一个ViewPager,我正在使用一个FragmentPagerAdapter来提供片段。问题是:

如何从活动中检测到来自 ViewPager 的所有片段都已创建并准备好显示数据。我如何通知片段,应该显示活动内部的数据?

4

1 回答 1

1

如何从活动中检测到来自 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();

其余的片段将在重新创建时检查是否有可用的新数据。

于 2013-04-27T09:22:06.033 回答