본문 바로가기

Android/Function

[안드로이드] 특정/모든 Fragment backstack에서 제거

728x90
반응형

 

 

supportFragmentManager.beginTransaction().apply {
      replace(R.id.container, calibrationFragment)
      addToBackStack("calibration")
      commit()
}

 

위와 같이 "calibration" 이란 이름을 지정하여 backstack에 추가한 후, fragment를 교체할 수 있습니다.

만약 backstack에 위 이름의 fragment만 지워주고 싶다면,

다음과 같이 사용하면 됩니다.

supportFragmentManager.popBackStack("calibration", FragmentManager.POP_BACK_STACK_INCLUSIVE)

 

만약 모든 backstack을 제거하고 싶다면, 다음과 같이 사용합니다.

 // CLEAR BACK STACK.
    private void clearBackStack() {
        final FragmentManager fragmentManager = getSupportFragmentManager();
        while (fragmentManager.getBackStackEntryCount() != 0) {
            fragmentManager.popBackStackImmediate();
        }
    }

 

수정/ getBackStackEntryCount가 deprecated되었으므로, 다음과 같이 사용해야합니다.

fun clearBackStack() {
     val fragmentManager: FragmentManager = supportFragmentManager
     fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)
}

 

728x90
반응형