• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

fragment 이동시 data 초기화

23.06.10 16:24 작성 조회수 230

0

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

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

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

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

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.06.12

안녕하세요, 인프런 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 등을 활용해 이전 상태를 복원할 수 있습니다.

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