package com.yj.app.test.show; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.View; import android.view.View.OnClickListener; import com.jkb.fragment.rigger.rigger.Rigger; import com.yj.app.R; import com.yj.app.base.BaseFragment; import com.yj.app.test.ContainerFragment; import java.util.ArrayList; /** * @author JingYeoh * <a href="mailto:[email protected]">Email me</a> * <a href="https://github.com/justkiddingbaby">Github</a> * <a href="http://blog.justkiddingbaby.com">Blog</a> * @since Nov 30,2017 */ public class ShowFragment extends BaseFragment implements OnClickListener { public static ShowFragment newInstance() { Bundle args = new Bundle(); ShowFragment fragment = new ShowFragment(); fragment.setArguments(args); return fragment; } private ArrayList<String> mContainerTags; private ArrayList<String> mFragmentTags; private int[] mContainer = new int[]{ R.id.fs_content1, R.id.fs_content2, R.id.fs_content3, R.id.fs_content4 }; @Override protected int getContentView() { return R.layout.frg_show; } @Override protected void init(Bundle savedInstanceState) { if (savedInstanceState == null) { mFragmentTags = new ArrayList<>(); mContainerTags = new ArrayList<>(); Fragment[][] fragments = new Fragment[4][2]; for (int i = 0; i < 4; i++) { fragments[i][0] = ContainerFragment.newInstance(i, i % 2 == 0); fragments[i][1] = ContainerFragment.newInstance(4, i % 2 == 0); mFragmentTags.add(Rigger.getRigger(fragments[i][0]).getFragmentTAG()); mContainerTags.add(Rigger.getRigger(fragments[i][1]).getFragmentTAG()); Rigger.getRigger(this).addFragment(mContainer[i], fragments[i][0]); Rigger.getRigger(this).addFragment(mContainer[i], fragments[i][1]); } for (int i = 0; i < 4; i++) { Rigger.getRigger(this).showFragment(mFragmentTags.get(i)); } } else { mFragmentTags = savedInstanceState.getStringArrayList(BUNDLE_KEY); mContainerTags = savedInstanceState.getStringArrayList(BUNDLE_KEY + 1); } initListener(); } private void initListener() { findViewById(R.id.fs_content1).setOnClickListener(this); findViewById(R.id.fs_content2).setOnClickListener(this); findViewById(R.id.fs_content3).setOnClickListener(this); findViewById(R.id.fs_content4).setOnClickListener(this); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putStringArrayList(BUNDLE_KEY, mFragmentTags); outState.putStringArrayList(BUNDLE_KEY + 1, mContainerTags); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.fs_content1: showFragment(0); break; case R.id.fs_content2: showFragment(1); break; case R.id.fs_content3: showFragment(2); break; case R.id.fs_content4: showFragment(3); break; } } private void showFragment(int position) { Fragment fragment = Rigger.getRigger(this).findFragmentByTag(mFragmentTags.get(position)); Rigger.getRigger(this).showFragment(mFragmentTags.get(position), false); if (position == 2) return; if (fragment.isHidden()) { Rigger.getRigger(this).showFragment(mFragmentTags.get(position)); } else { Rigger.getRigger(this).showFragment(mContainerTags.get(position)); } } }