코딩 (독학)/★ Kotlin

[Ch.★] Fragment BackStack (Android Studio with Kotlin) _ 안드로이드 스튜디오 백스택 (뒤로가기, 이전 버튼)

짱득이 2022. 2. 5. 19:56
300x250
반응형

* 시작에 앞서

개인 프로젝트, 코딩 과정을 상세하게 기록하고 리뷰하기 위해 작성된 블로그입니다.
공부와 함께 진행되는 스파르타식 프로젝트이므로, 부족한 부분이 많을 수 있습니다.
Feedback은 언제나 환영입니다.

본 포스트는 Fragment를 사용할 때 BackStack 코드의 유 무에 따른 애플리케이션 동작 방식에 대한 포스트입니다.

먼저 BackStack? 무엇인지 먼저 간략하게 짚고 넘어가자.

 

Android Fragment를 사용할 때 뒤로 가기 동작이 있으면 기본적으로 Activity onBackPressed가 동작되어 해당 Activity는 사라지거나 앱이 종료되는 현상이 발생한다.

 

그러나 이러한 방식은 대부분의 개발자들이 원했던 방향이 아닐 것이다.

작업하던 도중 뒤로 가기를 잘못 누르면 해당 작업은 처음부터 다시 해야 하므로 여간 번거로움이 아니다. 이럴 때 사용하는 것이 바로 백 스택이다.

 

백 스택을 이용하면 뒤로 가기를 눌렀을 때 Activity를 종료 시키는 방식이 아닌, Stack에 쌓여진 Fragment를 하나씩 없애줌으로써 뒤로가기를 눌렀을 때 Fragment가 Stack에 남아있는 경우 Stack의 순서대로 Activity를 다시 보여주면서, 해당 Fragment Activity는 제거해 주는 상황을 만들 수 있게 된다.

 

val transaction = supportFragmentManager.beginTransaction()

transaction.addToBackStack(null)
transaction.commit()

방법은 위와 같이 FragmentManager를 참조하여 사용한다.

BackStack은. beginTransaction()의 순간부터 commit() 되기까지의 전환 자체를 저장하게 된다.

(BackStack의 현재 Count는 FragmentManager의 getBackStackCount()로 알 수 있다.)

 

만약 addToBackStack을 하지 않고 commit을 한 경우, 뒤로 가기 버튼을 누르면 특별한 메서드가 없었던 것이므로, onBackPressed가 여전히 동작할 것이다.

 

1.. addToBackStack(null) : 해당 transaction을 BackStack에 저장.

2. .commit() : transaction 실행

 

(popBackStack()은 BackStack을 하나씩 pop 하는 메소드로, 비동기적으로 되어있다.)

 

 

 

 

728x90
반응형