android fragment切換
1、調用方式
xml佈局
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/frame_layout"
></FrameLayout>
調用代碼
Fragment1 fragment1;
if(fragment1 == null) {
fragment1 = new Fragment1();
}
switchFragment(fragment1);
2、函數
- show/add方式,切換後不重載
Fragment currentFragment;
/**
* @method switchFragment
* @description fragment切換,切換方式爲 show/hide
* @date: 2020-02-13 15:50
* @author: ccc
* @param fragment
* @return void
*/
private void switchFragment(Fragment fragment) {
//開啓fragment事務
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
//判斷當前顯示的fragment是否爲空,不爲空則隱藏
if(currentFragment != null)
fragmentTransaction.hide(currentFragment);
//判斷需要顯示的fragment是否已經添加過,添加過 show 沒添加過 add
if (fragment.isAdded()){
fragmentTransaction.show(fragment);
System.out.println("is ready add");
}else{
fragmentTransaction.add(R.id.frame_layout,fragment);
System.out.println("is not add");
}
fragmentTransaction.commit();
//將當前顯示的fragment 賦給 currentFragment
currentFragment = fragment;
}
- replace方式,切換後銷燬原fragment
/**
* @method switchFragment
* @description fragment切換,切換方式爲 replace
* @date: 2020-02-13 15:50
* @author: ccc
* @param fragment
* @return void
*/
private void switchFragment(Fragment fragment) {
//開啓fragment事務
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
//切換的時候需重啓加載fragment時使用replace
fragmentTransaction.replace(R.id.frame_layout,fragment).commit();
}