[Android] 안드로이드에서 FragmentManager에서 뒤로 가기(back) 버튼을 막는 방법

안드로이드에서 FragmentManager에서 뒤로 가기 버튼을 막는 방법은 다음과 같습니다.

  1. onBackPressed() 메서드 재정의: Fragment를 사용하는 Activity의 onBackPressed() 메서드를 재정의하여 뒤로 가기 버튼 이벤트를 처리할 수 있습니다. 다음은 예시 코드입니다.
@Override
public void onBackPressed() {
    // 뒤로 가기 버튼 이벤트를 처리할 로직 작성
    // super.onBackPressed()를 호출하지 않으면 뒤로 가기 버튼 동작이 막힙니다.
}
  1. addToBackStack(null) 사용하지 않기: Fragment를 트랜잭션에 추가할 때 addToBackStack(null)을 호출하지 않으면 뒤로 가기 버튼이 동작하지 않습니다. addToBackStack(null)을 호출하지 않도록 하여 뒤로 가기 버튼을 막을 수 있습니다.
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, new MyFragment());
// fragmentTransaction.addToBackStack(null); 호출하지 않음
fragmentTransaction.commit();
  1. onBackPressedDispatcher 사용: AndroidX 라이브러리에서 제공하는 onBackPressedDispatcher를 사용하여 뒤로 가기 버튼 이벤트를 처리할 수 있습니다. 다음은 예시 코드입니다.
OnBackPressedDispatcher onBackPressedDispatcher = requireActivity().getOnBackPressedDispatcher();
OnBackPressedCallback callback = new OnBackPressedCallback(true /* enabled by default */) {
    @Override
    public void handleOnBackPressed() {
        // 뒤로 가기 버튼 이벤트를 처리할 로직 작성
        // 만약 이벤트를 처리했다면 true를 반환하고, 그렇지 않으면 false를 반환
    }
};
onBackPressedDispatcher.addCallback(getViewLifecycleOwner(), callback);

이 방법들 중 하나를 선택하여 FragmentManager에서 뒤로 가기 버튼을 막을 수 있습니다.

Fragment를 사용하는 Activity에서 뒤로 가기 버튼을 막는 다른 방법 중 하나는 다음과 같습니다:

  1. onBackPressed() 메서드에서 아무 작업도 하지 않기: 기본적으로 Activity의 onBackPressed() 메서드는 현재 Activity에서 back 버튼을 누르면 수행되는 기본 동작을 처리합니다. 만약 onBackPressed() 메서드를 아무런 작업도 수행하지 않도록 재정의하면 back 버튼 동작이 무시되어 막히게 됩니다. 다음은 예시 코드입니다.
@Override
public void onBackPressed() {
    // 아무 작업도 수행하지 않음
    // 뒤로 가기 버튼 동작이 막힘
}

이 방법은 FragmentManager를 직접적으로 사용하지 않고, Activity의 onBackPressed() 메서드를 이용하여 뒤로 가기 버튼을 막을 수 있습니다.