package me.pjq.pushup.fragment; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.squareup.otto.Bus; import me.pjq.pushup.AppPreference; import me.pjq.pushup.EFLogger; import me.pjq.pushup.MyApplication; import me.pjq.pushup.ServiceProvider; import me.pjq.pushup.utils.Utils; /** * Created by pengjianqing on 5/24/13. */ public abstract class BaseFragment extends Fragment implements FragmentBridge{ private String TAG; private View mFragmentView; //protected UserData userData; private boolean reuseFragmentView = false; ViewGroup container; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EFLogger.i(TAG, "onCreate"); TAG = this.getClass().getSimpleName(); } protected AppPreference getPreference(){ return AppPreference.getInstance(getApplicationContext()); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { EFLogger.i(TAG, "onCreateView"); this.container = container; if (reuseFragmentView) { if (null == mFragmentView) { mFragmentView = onGetFragmentView(inflater); ensureUi(); } } else { mFragmentView = onGetFragmentView(inflater); ensureUi(); } return mFragmentView; } protected View getContainerView() { return mFragmentView; } /** * Return the FragmentView created by * {@link #onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)} * * @return */ protected abstract View onGetFragmentView(LayoutInflater inflater); @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); } /** * Init the ui,such as retriev the view id. */ protected abstract void ensureUi(); @Override public void onPause() { super.onPause(); EFLogger.i(TAG, "onPause"); } @Override public void onResume() { super.onResume(); EFLogger.i(TAG, "onResume"); } @Override public void onStop() { super.onStop(); EFLogger.i(TAG, "onStop"); } @Override public void onDestroy() { super.onDestroy(); EFLogger.i(TAG, "onDestroy"); } @Override public void onDestroyView() { super.onDestroyView(); EFLogger.i(TAG, "onDestroyView"); Utils.unBindDrawables(mFragmentView); } @Override public void onDetach() { super.onDetach(); EFLogger.i(TAG, "onDestroyView"); } protected Context getApplicationContext() { return MyApplication.getContext().getApplicationContext(); } }