강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

Kei님의 프로필 이미지
Kei

작성한 질문수

[중급편] 친절한 JETPACK 개론 <상> (Android Kotlin)

Fragment LiveData / LifeCycleOwner - 2

fragment 이동시 data 초기화

작성

·

370

0

fragment 1 에서 btn 을 눌러서 plus가 되면 value값이 증가를 하고, 이 증가한 상태에서 fragment 2로 갔다가,

다시 fragment1 을 누르면 이전에 fragment가 나오는게 아니라 새로운 fragment가 생성이 되네요?

transaction할 때 replace를 써서 그런것 같은데,

fragment1 버튼을 누르면 새로운 fragment1이 아닌 기존 생성한 fragment1 화면으로 가는 것은 어떻게 해야 하나요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

replace()는 현재 스택에서 특정 Fragment를 pop하고 해당 Fragment를 추가하는 메소드입니다. 따라서 기존 Fragment가 아니라 새로운 Fragment가 생성됩니다.

해결 방법으로는, Fragment1에서 Fragment2로 이동할 때 Fragment1의 값을 저장하고, Fragment1로 돌아올 때 저장된 값을 불러와 화면에 표시하면 됩니다.

  1. Fragment1에서 값 저장하기
    Fragment1에서 plus 버튼을 클릭할 때마다 값을 저장합니다. 이때 데이터는 ViewModel이나 Bundle 등을 활용해 저장합니다.

  2. Fragment2로 이동할 때 저장된 값 전달하기
    Fragment1에서 Fragment2로 이동할 때 저장된 값을 전달합니다. 이때 Bundle이나 ViewModel 등을 활용합니다.

  3. Fragment1로 돌아올 때 저장된 값 불러오기
    Fragment1로 돌아올 때, 저장된 값을 불러와 화면에 표시합니다. 이때 Bundle이나 ViewModel 등을 활용합니다.

위 방법을 활용하면, Fragment1에서 Fragment2로 이동할 때 마다 화면이 변경되는 것이 아니라 저장된 값으로 이전 Fragment 화면을 복원할 수 있습니다.

참고로, 만약 Fragment1이 Activity에 의해 재생성되는 경우 Bundle이나 ViewModel 등을 활용해 이전 상태를 복원할 수 있습니다.

프로그래밍에 대해 궁금한 점이 있다면 댓글로 질문해주세요. 감사합니다.

Kei님의 프로필 이미지
Kei

작성한 질문수

질문하기