关于viewpager与fragment需要刷新数据的bug,解决办法。

来源:互联网 发布:js url encode 中文 编辑:程序博客网 时间:2024/05/17 04:51

       首先要解析两个问题,第一:在 Fragment 中,使用 getArguments() 来取得参数。这是常用的参数传递方式。这种数据传递方式只可能用一次,在 Fragment 被添加到 FragmentManager 后,所以会造成,就算我们把fragment释放掉,在viewpager里面,fragment获取到的bundle,仍然是第一次保存的数据,因此参数传递,在继承的 Fragment 子类中,新增几个 setter,getter然后通过这些 setter 将数据传递过去。同时提醒一下这些 setter 方法中不要操作那些 View,这些 View 只有在 onCreateView() 事件后才可以操作。第二:FragmentPagerAdapter 继承自 PagerAdapter该类内的每一个生成的 Fragment 都将保存在内存之中,因此适用于那些相对静态的页,数量也比较少的那种;FragmentStatePagerAdapter  继承自 PagerAdapter, 当页面离开视线后,就会被消除,释放其资源;而在页面需要显示时,生成新的页面(就像 ListView 的实现一样)。这么实现的好处就是当拥有大量的页面时,不必在内存中占用大量的内存。所以不用 FragmentPagerAdapter,而改用 FragmentStatePagerAdapter,并且重载 getItemPosition() 并返回 POSITION_NONE,以触发销毁对象以及重建对象。


阅读全文
0 0
原创粉丝点击