package org.magnum.soda.example.controllers.homefragment; /** * @project * @author chris.jenkins * @created Dec 28, 2011 */ import org.magnum.soda.example.maint.R; import com.actionbarsherlock.app.SherlockFragment; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; /** * @author chris.jenkins */ public abstract class BasePagerFragment extends SherlockFragment { // Data private FragmentStatePagerAdapter mAdapter = null; // Views private int layoutRes; private View mRootView; public ViewPager mPager; // Handlers private final Handler handler = new Handler(); private Runnable runPager; private boolean mCreated = false; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mRootView = inflater.inflate(R.layout.fragment_home, container, false); mPager = (ViewPager) mRootView.findViewById(R.id.viewPagerHomeFragment); mPager.setOffscreenPageLimit(2); return mRootView; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (runPager != null) handler.post(runPager); mCreated = true; } /** * @see android.support.v4.app.Fragment#onPause() */ @Override public void onPause() { super.onPause(); handler.removeCallbacks(runPager); } /** * Set the ViewPager adapter from this or from a subclass. * * @author chris.jenkins * @param adapter This is a FragmentStatePagerAdapter due to the way it creates the TAG for the * Fragment. */ protected void setAdapter(FragmentStatePagerAdapter adapter) { mAdapter = adapter; runPager = new Runnable() { @Override public void run() { mPager.setAdapter(mAdapter); } }; if (mCreated) { handler.post(runPager); } } /** * Has to be set before onCreateView * * @author chris.jenkins * @param layoutRes */ protected void setLayoutRes(int layoutRes) { this.layoutRes = layoutRes; } }