package com.dinhcv.lifelogpedometer.activity; import android.content.Context; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import com.dinhcv.lifelogpedometer.R; import com.dinhcv.lifelogpedometer.model.structure.pojo.SnsSearchInfo; public class SnsFragment extends Fragment implements SettingFragmentPresenter { public enum SnsFragmentTag { SNS_TOPIC, SNS_SEARCH, SNS_DETAIL, SNS_MY_GROUP, SNS_CREATE_GROUP; } private FragmentTransaction mFragmentTransaction; private FragmentManager mFragmentManager; private View mRootView; private FrameLayout mSmsLayout; private SnsTopicFragment mSnsTopicFragment; private SnsSearchFragment mSnsSearchFragment; private SnsDetailFragment mSnsDetailFragment; private SnsMyGroupFragment mSnsMyGroupFragment; public static final String SNS_TOPIC_TAG = "sns_topic"; public static final String SNS_SEARCH_TAG = "sns_search"; public static final String SNS_DETAIL_TAG = "sns_detail"; public static final String SNS_CREATE_GROUP_TAG = "sns_detail"; public SnsFragmentTag mCurrentChildSnsFragment = SnsFragmentTag.SNS_TOPIC; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment mRootView = inflater.inflate(R.layout.fragment_sns, container, false); mFragmentManager = getFragmentManager(); mFragmentTransaction = mFragmentManager.beginTransaction(); initView(); initData(); return mRootView; } /** */ private void initView() { mSmsLayout = (FrameLayout) mRootView.findViewById(R.id.layout_sns); mSnsTopicFragment = new SnsTopicFragment(); mSnsTopicFragment.setRootFragment(this); mSnsSearchFragment = new SnsSearchFragment(); mSnsSearchFragment.setRootFragment(this); mSnsDetailFragment = new SnsDetailFragment(); mSnsDetailFragment.setRootFragment(this); mSnsMyGroupFragment = new SnsMyGroupFragment(); showSnsTopicFragment(); } public void handleToolbarClick(int i) { // with i = 0 -> home icon is clicked if (i == 0) { Log.i("SonLT", "Home icon clicked"); switch (mCurrentChildSnsFragment) { case SNS_TOPIC: break; case SNS_SEARCH: showSnsTopicFragment(); break; case SNS_DETAIL: showSnsSearchFragment(); break; case SNS_CREATE_GROUP: showSnsSearchFragment(); break; case SNS_MY_GROUP: showSnsTopicFragment(); break; } } } public void showSnsTopicFragment() { mCurrentChildSnsFragment = SnsFragmentTag.SNS_TOPIC; mFragmentTransaction = mFragmentManager.beginTransaction(); mFragmentTransaction.replace(mSmsLayout.getId(), mSnsTopicFragment, SNS_TOPIC_TAG); mFragmentTransaction.commit(); } public void showSnsSearchFragment() { mCurrentChildSnsFragment = SnsFragmentTag.SNS_SEARCH; mFragmentTransaction = mFragmentManager.beginTransaction(); mFragmentTransaction.replace(mSmsLayout.getId(), mSnsSearchFragment, SNS_SEARCH_TAG); mFragmentTransaction.commit(); } public void showSnsDetailFragment(SnsSearchInfo info) { if (info == null) return; mCurrentChildSnsFragment = SnsFragmentTag.SNS_DETAIL; mSnsDetailFragment.setInitData(info); mFragmentTransaction = mFragmentManager.beginTransaction(); mFragmentTransaction.replace(mSmsLayout.getId(), mSnsDetailFragment, SNS_DETAIL_TAG); mFragmentTransaction.commit(); } public void showSnsCreateGroupFragment() { mCurrentChildSnsFragment = SnsFragmentTag.SNS_CREATE_GROUP; mFragmentTransaction = mFragmentManager.beginTransaction(); mFragmentTransaction.replace(mSmsLayout.getId(), new SnsCreateGroupFragment(), SNS_CREATE_GROUP_TAG); mFragmentTransaction.commit(); } public void showSnsMyGroupFragment() { mCurrentChildSnsFragment = SnsFragmentTag.SNS_MY_GROUP; mFragmentTransaction = mFragmentManager.beginTransaction(); mFragmentTransaction.replace(mSmsLayout.getId(), mSnsMyGroupFragment, SNS_CREATE_GROUP_TAG); mFragmentTransaction.commit(); } /** * Init data */ private void initData() { } @Override public void onAttach(Context context) { super.onAttach(context); } /** * Save data */ @Override public void onSaveData() { } @Override public void onInvalidate(boolean isInit) { initData(); } @Override public void onViewStateRestored(@Nullable Bundle savedInstanceState) { super.onViewStateRestored(savedInstanceState); initData(); } }