Fragment的显示与隐藏问题

众所周知,Fragment是安卓发展过程中一个重要的变化,其使用也越来越普遍了。关于Fragment的使用,我们经常用到的就是在一个activity钟通过菜单选项的点击来切换不同的Fragment。同时一般我们都有这样的需求:保持Fragment的状态,也就是我们来回的切换Fragment时,对应的Fragment总是显示切换前的数据,而不是每一次切换回来后都初始化数据。所以此时我们一般用到的就是Fragment的hide/show方法。

但是随之而来带来的问题是,fragment的生命周期不走了,比如onResume方法只在第一次切换的时候会调用,以后再怎么切换,都不会走onResume生命周期方法了,其他生命周期依然如此。这样就引出了我的问题如下:

当我切换到某一个Fragment-A,而Fragment-A需要请求服务器接口获取数据,如果运气不好,第一次切换到Fragment-A时,请求服务器超时了,没有拿到数据。那么,我重新切换到另外一个Fragment,然后在切换回来Fragment-A,由于onResume等等生命周期方法都不再走,所以显示的数据还是保持的原来的数据,即请求服务器失败。这样用户体验就非常差。

那么如何解决呢?这里我们就用到了Fragment的一个方法onHiddenChanged。该方法只有一个boolean型的参数,我们可以通过该参数来判断Fragment的显示与隐藏。当显示的时候,我们通过判断上一次网络请求是否失败了来选择是否重新调用服务器请求数据即可。至于如何判断网络请求失败了,你可以在Fragment中定义一个全局变量,很简单的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值