Fragment-Fragment切换的数据刷新问题
Posted RedWolfChao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fragment-Fragment切换的数据刷新问题相关的知识,希望对你有一定的参考价值。
需求:
fragment中存在一个ListView列表,在其进入切换到别的页面(或者是Fragment或者是Activity)的情况下需要刷新数据
问题
仅仅依靠onResume方法实现不了,在fragment切换fragment的时候(Viewpager),onResume并不会调用
解决过程
通过查看Fragment中所有的回调方法发现,有这么一个方法,符合我们的需求
// 参数enter表明 当前进入此方法是否为进入Fragment调用的
public Animation onCreateAnimation(int transit, boolean enter, int nextAnim)
经过测试发现onCreateAnimation在framgment切换的时候会调用,但是在进入Activity返回时,可能不会被调用,具体什么况下不会被调用并没有深究.
- 解决办法
两个方法都要重写,同时加一个标记,判断数据是否已经被刷新,没有被刷新则刷新,否则不刷新
private boolean isGetData = false;
@Override
public Animation onCreateAnimation(int transit, boolean enter, int nextAnim)
// 进入当前Fragment
if (enter && !isGetData)
isGetData = true;
// 这里可以做网络请求或者需要的数据刷新操作
else
isGetData = false;
return super.onCreateAnimation(transit, enter, nextAnim);
@Override
public void onResume()
super.onResume();
if (!isGetData)
// 这里可以做网络请求或者需要的数据刷新操作
isGetData = true;
@Override
public void onPause()
super.onPause();
isGetData = false;
(PS:当然,用观察者模式 比如EventBus也可以实现)
以上是关于Fragment-Fragment切换的数据刷新问题的主要内容,如果未能解决你的问题,请参考以下文章
如何实现Echart不刷新页面,多语言切换下的地图数据重新加载,api请求数据加载,soketed数据实时加载