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切换的数据刷新问题的主要内容,如果未能解决你的问题,请参考以下文章

vue切换路由不会刷新页面就是巨大的优点吗?

如何实现Echart不刷新页面,多语言切换下的地图数据重新加载,api请求数据加载,soketed数据实时加载

如何保存切换状态,刷新页面后不会丢失

hbuild mui 开发的webapp 怎么实现切换选项卡,然后执行一次下拉刷新更新数据,求各位大神指教

uniapp微信小程序切换到tabber页面没有自动刷新

切换方向时 AVPlayer 刷新(使用 Firebase Firestore 视频链接)