Skip to content

Instantly share code, notes, and snippets.

@mbarrben
Forked from chrisjenx/gist:3405429
Created October 15, 2012 08:54
Show Gist options
  • Save mbarrben/3891538 to your computer and use it in GitHub Desktop.
Save mbarrben/3891538 to your computer and use it in GitHub Desktop.
BasePagerFragment - Simple way to place a FragmentViewPager in a Fragment!
public abstract class BaseViewPagerFragment extends SherlockFragment {
protected DataProvider dataProvider;
private int layoutRes;
private FragmentStatePagerAdapter pagerAdapter = null;
private ViewPager viewPager;
private PageIndicator pageIndicator;
private final Handler handler = new Handler();
private Runnable runPager;
private boolean isCreated = false;
public BaseViewPagerFragment() {
setLayoutRes(R.layout.tabs);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(layoutRes, container, false);
viewPager = (ViewPager) rootView.findViewById(R.id.pager);
pageIndicator = (TabPageIndicator) rootView.findViewById(R.id.tabs);
viewPager.setOffscreenPageLimit(2);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
dataProvider = (DataProvider) getActivity().getApplication()
.getSystemService(DataProvider.SERVICE);
if (runPager != null) {
handler.post(runPager);
}
isCreated = true;
}
@Override
public void onPause() {
super.onPause();
handler.removeCallbacks(runPager);
}
protected void setAdapter(FragmentStatePagerAdapter adapter) {
pagerAdapter = adapter;
runPager = new Runnable() {
@Override
public void run() {
viewPager.setAdapter(pagerAdapter);
pageIndicator.setViewPager(viewPager);
((View) pageIndicator).setVisibility(View.VISIBLE);
}
};
if (isCreated) {
handler.post(runPager);
}
}
protected void setLayoutRes(int layoutRes) {
this.layoutRes = layoutRes;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment