public abstract class BaseFragment extends Fragment{
protected Context context;
private boolean isInitViews=false;
private boolean isVisibleToUser=false;
protected boolean isLoaded=false;
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
context = activity.getBaseContext();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(getLayoutResId(), null);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onViewCreated(view, savedInstanceState);
findViews(view);
isInitViews=true;
fetchData(false);
}
protected abstract int getLayoutResId();
protected abstract void findViews(View layoutView);
protected abstract void reqRemoteDatas();
public void fetchData(boolean _isForceFetchData){
if((_isForceFetchData || !isLoaded )&& (isInitViews && isVisibleToUser)){
reqRemoteDatas();
isLoaded=true;
}
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
this.isVisibleToUser=isVisibleToUser;
fetchData(false);
}
}