2013-07-17 38 views
1

我有一个与ViewPager片段(标签)的可变数量的活性。获取数据(异步)和填充ViewPager的片段

一旦如果相关联的(复杂的)数据已被加载启动活动检测。如果没有,则显示进度栏视图并开始提取数据的AsyncTask。根据数据的不同,活动会创建多个片段(选项卡),并为每个片段提供一组数据。

我目前持有对片段的引用(我知道这是不鼓励的),并且当片段被重用时遇到各种各样的问题 - 我将数据提供给片段的错误实例。

那么,有没有解决这个问题的“android方式”?

+0

我发现这[问题/答案](http:// stackoverflow。com/questions/7379165/update-data-in-listfragment-as-part-of-viewpager),但它不能完全回答我的问题。我每次都重新实例化'ViewPager'(但片段被重用?)。 – dacwe

回答

2

我碰到各种各样的问题,当片段得到重用

片段通常不会在ViewPager得到重用。这不像AdapterView,其中行被回收。使用FragmentPagerAdapterFragmentStatePagerAdapter,一个片段表示一个且仅有一个页面。

我重新实例每次ViewPager(但片段得到重用?)

啊。这是一个稍微不同的问题。

FragmentPagerAdapterFragmentStatePagerAdapter股票实现做一些假设:

  1. 他们是在碎片完全控制,特别是在运行事务添加和从UI

  2. 删除的条款
  3. 这些碎片将只能被一个“逻辑”ViewPager(IOW,重新创建ViewPager的配置更改很好,但几乎可以)使用

复杂的是,这些适配器将片段存储在某些标签下,因此如果这些片段仍然存在于这些标签中,那么现有的片段将被使用,而不是创建新的片段。

那么,有没有解决这个问题的“android方式”?

从您的问题中不清楚为什么您甚至需要“重新实例化ViewPager”。我假设这与某种刷新操作有关,或者是其他迫使你通过第二段描述的过程的东西。

你可以给my ArrayPagerAdpater一试,因为它是关于外部代理摆弄碎片友好。由于您控制了片段的标签,因此您始终可以确定您正在使用正确的片段 - 而不是自己缓存它们,只需检索正确的片段并对其进行处理即可。

+0

我会试试看。谢谢 – dacwe