直接上代码:
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private FrameLayout mFrameLayout; private Button btn_pan; private Button btn_twopan; private Button btn_sanpan; private Button btn_sipan; private List<Fragment> mFragments = new ArrayList<>(); private PanFragment panFragment; private TwoPanFragment twoPanFragment; private SanFragment sanPanFragment; private SiPanFragment siPanFragment; Fragment currentFragment = new Fragment(); private int currentPostion; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initListener(); panFragment = new PanFragment(); twoPanFragment = new TwoPanFragment(); sanPanFragment = new SanFragment(); siPanFragment = new SiPanFragment(); mFragments.add(panFragment); mFragments.add(twoPanFragment); mFragments.add(sanPanFragment); mFragments.add(siPanFragment); setLayout(); } private void initListener() { btn_pan.setOnClickListener(this); btn_twopan.setOnClickListener(this); btn_sanpan.setOnClickListener(this); btn_sipan.setOnClickListener(this); } private void initView() { mFrameLayout = (FrameLayout) findViewById(R.id.fl_fragment); btn_pan = (Button) findViewById(R.id.btn_pan); btn_twopan = (Button) findViewById(R.id.btn_twopan); btn_sanpan = (Button) findViewById(R.id.btn_sanpan); btn_sipan = (Button) findViewById(R.id.btn_sipan); } //主要方法 private void setLayout() { FragmentManager manger = getSupportFragmentManager(); FragmentTransaction transaction = manger.beginTransaction(); if (!mFragments.get(currentPostion).isAdded()) { transaction.hide(currentFragment).add(R.id.fl_fragment, mFragments.get(currentPostion)); } else { transaction.hide(currentFragment).show(mFragments.get(currentPostion)); } currentFragment = mFragments.get(currentPostion); transaction.commit(); } // private void setLayout1(Fragment from, Fragment to) { if (from != to) { FragmentManager manger = getSupportFragmentManager(); FragmentTransaction transaction = manger.beginTransaction(); if (!to.isAdded()) { if (from != null) { transaction.hide(from); } if (to != null) { transaction.add(R.id.fl_fragment, to).commit(); } } else { if (from != null) { transaction.hide(from); } if (to != null) { transaction.show(to).commit(); } } } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_pan: currentPostion = 0; break; case R.id.btn_twopan: currentPostion = 1; break; case R.id.btn_sanpan: currentPostion = 2; break; case R.id.btn_sipan: currentPostion = 3; break; } setLayout(); } }结果:
07-11 07:57:56.996 10077-10077/com.jetway.fenping D/SiPanFragment: onCreateView:
07-11 07:57:58.660 10077-10077/com.jetway.fenping D/SanFragment: onCreateView:
07-11 07:57:59.860 10077-10077/com.jetway.fenping D/TwoPanFragment: onCreateView: (日志没有重复创建)