Android 中 ViewPager+Fragment关于fragment的数据更新
ViewPager通常用来装载多个Fragment,我想要的结果是,当我的界面滑向某个Fragment时,将重新执行Fragment中的刷新方法。
Viewpager中Fragment的生命周期
- ViewPager装载Fragment一般使用FragmentPagerAdapter或FragmentStatePagerAdapter,同样借助FragmentManager,在adapter的getItem方法中根据position制定显示的fragment
- 由于Viewpager的缓存特点,Viewpager启动时其第一个Fragment页面及待缓存的页面都将按顺序,开始他们的正常生命周期,走向onResume,即:
- Viewpager所在Activity - onResume
- Fragment1 - onResume
- Fragment2 - onResume
- Fragment3 - onResume
- 由于这若干个页面的生命周期被同时催化了,影响了我们的单一判断,即无法判断“真正”显示和消失在使用者眼前的页面。所以,我们采用Fragment自带的setUserVisibleHint()方法来实现这一功能。
- @Override
- public void setUserVisibleHint(boolean isVisibleToUser) {
- super.setUserVisibleHint(isVisibleToUser);
- if (!isCreated) {
- return;
- }
- //如果在当前Fragment界面
- if (isVisibleToUser) {
- getAlarmList(); //Fragment中自定义的刷新方法
- }else {
- }