ViewPager有一个机制,当加载一个界面时,会将后面的几个界面也一起加载,这样会使得我们对前一个界面所做的操作,在后一个界面上无法显示。
因此需要对其进行懒加载,以下针对的是在ViewPager中的Fragment
1.先声明一个BaseFragemnt抽象类
package com.example.trip.util;
import android.support.v4.app.Fragment;
/**
* Created by Administrator on 2015-9-24.
*/
public abstract class BaseFragment extends Fragment {
protected boolean isVisible;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
// TODO Auto-generated method stub
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
isVisible = true;
lazyLoadData();
} else {
isVisible = false;
}
}
public abstract void lazyLoadData();
}
2.对Fragment继承自该baseFragment,实现抽象方法:
@Override
public void lazyLoadData() {
// TODO Auto-generated method stub
if (isVisible && isInit) {
//里面添加对界面加载数据的一些操作
}
}
3.在 oncreatView中:
isInit = true;
if (isVisible) {
new Handler().post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
//和<span style="font-family: SimSun; "> lazyLoadData()的操作一致</span>
}
});
}
4.isInit起始值为false