2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

FragmentTransaction

작성: sangseek | 게시 날짜: 2026/01/04 | 조회수: 41
[ 편집불가 ]

FragmentTransaction은 Android의 프래그먼트(Fragment)를 추가·제거·교체·숨김·표시 등으로 변경하는 작업들을 묶어 한 번에 실행하도록 표현한 객체입니다. FragmentManager.beginTransaction()으로 얻어 사용하며, 트랜잭션 안에 여러 프래그먼트 조작 명령을 넣고 나서 commit 계열 메서드로 적용합니다. 주요 특징과 동작은 다음과 같습니다. - 원자성(atomicity): 트랜잭션에 넣은 모든 조작(예: add, remove, replace 등)은 한 묶음으로 처리됩니다. 커밋하면 해당 묶음이 순서대로 적용됩니다. - 일반적인 생성 방법: - FragmentManager fm = getSupportFragmentManager(); - FragmentTransaction ft = fm.beginTransaction(); - ft.replace(R.id.container, new MyFragment()); - ft.addToBackStack(null); // 필요하면 뒤로가기 되돌리기 등록 - ft.commit(); - 주요 메서드: - add(fragment, tag) / add(containerViewId, fragment): 뷰 컨테이너에 프래그먼트 추가 - replace(containerViewId, fragment): 기존 프래그먼트를 제거하고 새 프래그먼트 추가 - remove(fragment): 프래그먼트 제거 - show(fragment) / hide(fragment): 프래그먼트 뷰 표시/숨김 - attach(fragment) / detach(fragment): 프래그먼트 인스턴스의 뷰를 다시 연결/해제 - setCustomAnimations(enter, exit, popEnter, popExit): 애니메이션 설정 - addToBackStack(name): 이 트랜잭션을 백스택에 추가해서 뒤로가기로 되돌릴 수 있게 함 - setReorderingAllowed(boolean): 프래그먼트 수명주기 호출 순서를 최적화(특히 애니메이션/Transition 함께 사용 시 권장) - 커밋 방식: - commit(): 프래그먼트를 비동기적으로 커밋(메인루프에서 실행). 즉시 적용되지 않을 수 있음. - commitNow(): 즉시(동기적으로) 적용. 백스택에 추가할 수 없음. - commitAllowingStateLoss(): 액티비티 상태가 이미 저장된 후에도 커밋, 상태 손실 위험 존재. IllegalStateException을 피하기 위해 사용. - 백스택과 되돌리기: addToBackStack으로 등록하면 사용자가 뒤로가기를 누를 때 트랜잭션이 역으로 실행되어 이전 상태로 복원됩니다. 등록하지 않으면 트랜잭션은 되돌릴 수 없습니다. - 수명주기 영향: 트랜잭션으로 프래그먼트를 추가/제거하면 해당 프래그먼트의 onAttach/onCreate/onCreateView/onStart/onResume 등 수명주기 콜백이 호출됩니다. setReorderingAllowed(true)로 변경하면 콜백 순서가 변경될 수 있으므로 조심해야 합니다. - 주의사항: - 동일한 FragmentTransaction 객체를 여러 번 재사용하면 안 됩니다. beginTransaction으로 새 트랜잭션을 얻어야 합니다. - UI 변경은 메인 스레드에서 수행해야 합니다. - commit 후 즉시 프래그먼트 참조를 기대하지 말고, 필요한 경우 commitNow를 고려하거나 FragmentManager에서 상태를 확인합니다. 간단한 예: FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.setCustomAnimations(R.anim.enter, R.anim.exit, R.anim.pop_enter, R.anim.pop_exit); ft.replace(R.id.container, new MyFragment(), "myTag"); ft.addToBackStack(null); ft.commit(); 요약하면, FragmentTransaction은 프래그먼트 관련 변경 작업들을 모아 원자적으로 적용하고 백스택에 등록해 되돌리기를 가능하게 하는 Android API의 핵심 도구입니다.
내용이 부정확하다면 싫어요를 누르세요.