android fragment切換

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();
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章