Fragment切换刷新数据

在实际项目中我们或有很多Fragment,而且会频繁切换。怎么能让他们切换完成同时达到刷新效果呢。

Activity中有onRestart方法那Fragment怎么办呢?

憋着急!看下面

//切换Fragment刷新
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser) {
        //当此fragment正当前显示是,执行该操作,
        //网络请求或者刷新数据
    } else {
        // 相当于Fragment的onPause
        // System.out.println("ChatFragment ---setUserVisibleHint---isVisibleToUser - FALSE");
    }
}

预加载fragment时 不会执行setUserVisibleHint(boolean isVisibleToUser) 该方法,只有当切换到fragment2时才运行setUserVisibleHint(boolean isVisibleToUser)

setUserVisibileHint() 来知道当前一个fragment对用户来说是隐藏还是显示,这个方法仅仅工作在FragmentPagerAdapter中,不能被使用在一个普通的activity中。

此方案局限在于此方法的第一次系统调用甚至早于Fragment的onCreate方法,故其第一次调用时isVisibleToUser值总为false,影响我们对生命周期顺序的判定;

 

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_exam,
            container, false);
    // 标记
    isCreated = true;

    return rootView;
}
//切换Fragment刷新
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (!isCreated) {
        return; }
    if (isVisibleToUser) {
        //当此fragment正当前显示是,执行该操作,
        //网络请求或者刷新数据
        Log.e("TAG", "onStart: ++++++++++++++++++" );
        //ListView适配器刷新,更新答题状态显示
        adapter1.notifyDataSetChanged();
    } else {
        // 相当于Fragment的onPause
        // System.out.println("ChatFragment ---setUserVisibleHint---isVisibleToUser - FALSE");
    }
}
223916_bL9y_2663968.jpg
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值