package edu.vanderbilt.cs282.feisele.lab06.lifecycle; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; /** * An abstract activity which logs the life-cycle call backs. A decorator * pattern implemented via inheritance. * * @author "Fred Eisele" <phreed@gmail.com> */ public abstract class LLFragment extends Fragment { static private final Logger logger = LoggerFactory.getLogger("class.fragment.lifecycle"); @Override public void onAttach(Activity activity) { super.onAttach(activity); logger.debug("onAttach: fragment attached " + activity.toString()); } @Override public void onDetach() { super.onDetach(); logger.debug("onDetach: fragment detach"); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState == null) { logger.debug("onCreate: fragment created fresh"); } else { logger.debug("onCreate: fragment restarted"); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (savedInstanceState == null) { logger.debug("onCreateView: fragment created fresh"); } else { logger.debug("onCreateView: fragment restarted"); } return super.onCreateView(inflater, container, savedInstanceState); } /** * This helper method allows the caller to specify whether the calling chain * should be continued. The android documentation suggests that in the case * of programmatically attached fragment the super should not be called (or * is unnecessary). * * @param inflater * @param container * @param savedInstanceState * @param isDynamic * @return */ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState, boolean isDynamic) { if (isDynamic) { if (savedInstanceState == null) { logger.debug("onCreateView: dynamic fragment created fresh"); } else { logger.debug("onCreateView: dynamic fragment restarted"); } return null; } return super.onCreateView(inflater, container, savedInstanceState); } @Override public void onDestroyView() { super.onDestroyView(); logger.debug("onDestroyView: fragment view destroyed"); } @Override public void onStart() { super.onStart(); logger.debug("onStart"); } @Override public void onResume() { super.onResume(); logger.debug("onResume"); } @Override public void onSaveInstanceState(Bundle savedInstanceState) { super.onSaveInstanceState(savedInstanceState); logger.debug("onSaveInstanceState"); } @Override public void onPause() { super.onPause(); logger.debug("onPause"); } @Override public void onStop() { super.onStop(); logger.debug("onStop"); } @Override public void onDestroy() { super.onDestroy(); logger.debug("onDestroy"); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); logger.debug("onActivityCreated: fragment activity created "); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); logger.debug("onActivityResult request={} result={} intent=[{}]", requestCode, resultCode, data); } }