private QuotesChildCollectFragment f2;
private QuotesChildCollectFragment f1;
private FragmentManager fragmentManager;
private void initViews(){
//getSupportFragmentManager() ,getParentFragmentManager()
fragmentManager=getChildFragmentManager();
}
private void setTabSelection(int index) {
FragmentTransaction ft = fragmentManager.beginTransaction();
hideFragment(ft);
switch (index) {
case IConstants.COLLECT_CONTRACT:
if (f1== null) {
f1 = QuotesChildCollectFragment.newInstance(index);
ft.add(R.id.fl_container, f1);
} else {
ft.show(f1);
}
break;
case IConstants.COLLECT_BIBI:
if (f2 == null) {
f2 = QuotesChildCollectFragment.newInstance(index);
ft.add(R.id.fl_container, f2);
}else{
ft.show(f2);
}
break;
}
ft.commit();
//ft.commitAllowingStateLoss()
}
//隱藏所有的fragment
private void hideFragment(FragmentTransaction transaction){
if(f1 != null){
transaction.hide(f1);
}
if(f2 != null){
transaction.hide(f2);
}
}
調(diào)用時(shí)默認(rèn)選擇一個(gè)
setTabSelection(IConstants.COLLECT_CONTRACT);
切換時(shí):
mRadioGroup.setOnCheckedChangeListener((group, checkedId) -> {
if (checkedId == R.id.rb_default_data_contract) {
setTabSelection(IConstants.COLLECT_CONTRACT);
}else if(checkedId == R.id.rb_default_data_bibi) {
setTabSelection(IConstants.COLLECT_BIBI);
}
});
布局要求:用FrameLayout裝載fragment
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fl_container"/>
或者另外一種方式創(chuàng)建fragment
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<fragment
android:name="com.smk.fragment.CardFragment"
android:id="@+id/cardFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<fragment
android:name="com.smk.fragment.PackageFragment"
android:id="@+id/packageFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
另外一種方式顯示和隱藏
cardFragment= (CardFragment) fragmentManager.findFragmentById(R.id.cardFragment);
packageFragment= (PackageFragment) fragmentManager.findFragmentById(R.id.packageFragment);
/**
* 第二種方式
* @param fragmentHide
* @param fragmentShow
*/
private void switchFg(Fragment fragmentHide,Fragment fragmentShow){
FragmentTransaction ft1 = fragmentManager.beginTransaction();
ft1.hide(fragmentHide);
ft1.commit();
FragmentTransaction ft2 = fragmentManager.beginTransaction();
ft2.show(fragmentShow);
ft2.commit();
}
//調(diào)用
switchFg(packageFragment,cardFragment);
當(dāng)fragment個(gè)數(shù)不固定或者需要從網(wǎng)絡(luò)請(qǐng)求中獲取fragment個(gè)數(shù)時(shí)(一般fragment內(nèi)容一樣),可以使用TabLayout或者第三方的庫(kù)MagicIndicator(https://github.com/hackware1993/MagicIndicator)