SnsFragment.java 5.26 KB
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();
    }

}