关于fragment切换更新数据问题

作者链接

http://blog.csdn.net/lantesi/article/details/45919479


之前项目中遇到一个问题,一个activity中有4个fragment,互相切换,我需要在fragment切换时,将切入前台的fragment的页面数据刷新,网上很多方法都不太好用。

之前一直在onResume()中调用,但是并不会在fragment互相切换中调用,因为他依赖于activity,但是fragment的切换并不会影响他的activity:

activity的生命流程是:onCreate(),onStart(),onResume()------>running

fragment的切换都在running状态中,所以,在fragment中调用onRsume()并不能起到刷新作用。


最近研究fragment的API,无意中发现一个方法public void onHiddenChanged(boolean hidden),突然就把之前的问题解决了。它在fragment中的作用有点类似于activity中的onResume方法。每次当fragment被切换到前台或者后台时,就被触发,这样就能实现在fragment相互切换时,刷新数据的作用了。


但是,在使用这个方法的时候需要注意,你的刷新操作如果涉及到页面组件,必须做一个flag用来标识页面是否已被创建,如果已被创建则可刷新页面,否则,会报空指针异常。

因为,我发现,在创建页面的过程中就会调用到此方法,这个时候,fragment中所包含的组件并没有被初始化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值