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,viewpager,listview,fragment)