IT/Android

프래그먼트에서 백키로 이전 프래그먼트로 이동하기(Go to the previous Fragment by backKey)

토마토조아 2019. 6. 4. 14:22
728x90

Fragment(프래그먼트)를 사용하다보면 백키를 눌렀을 때 이전에 보여졌던 프래그먼트로 이동하고 싶을 경우가 있다.

이에 관련하여 구글링을 하다보면 인터페이스를 선언해서 프래그먼트에 리스너를 생성하고 메인 액티비티에서 해당 리스너가 NULL이 아닐 경우 프래그먼트 이동을 컨트롤하거나...

리플렉션 방법을 이용해서 복잡하게 되어 있다.

하지만 사실 간단한 경우라면 위의 복잡한 방법이 필요없고 아래와 같이 간단하게만 사용하면 된다.

getActivity().getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.content_frame, new FragmentWeb())
                .addToBackStack(null)
                .commit();

위의 예시는 프래그먼트에서 프래그먼트로 이동할 경우이며, 구문에서의 핵심은 addToBackStack(null) 부분이다.

만약 액티비티에서 프래그먼트를 이동시킨다고 하면 아래와 같이 사용하면 될 것이다.

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, fragment);
ft.commit();

여튼 addToBackStack(null) 부분이 존재하면 프래그먼트를 이동할 때마다 스택에 히스토리를 기록해두게 된다.

그리고 따로 onBackPressed 에 오버라이드 해주지 않아도 백키를 누르면 시스템이 알아서 이전 프래그먼트로 이동을 해준다. 물론 이 방법이 API 몇까지 적용되는지는 잘 모르겠다. 테스트 한 것은 API28이긴 한데.. 내 예상으로는 API21의 롤리팝 이상부터는 적용되지 않을까 싶다.

728x90