您的位置:首页 > 其它

[置顶] Fragment-Fragment切换的数据刷新问题

2017-01-09 15:02 1041 查看
需求:

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也可以实现)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: