关于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中所包含的组件并没有被初始化。

你可能感兴趣的:(Android)