버튼이 있는 액티비티를 여러개 만들면서 예제를 만들어보는 프로젝트중이다.
5번째 버튼으로 안드로이드 jetpack navigation 예제로 fragment를 2개 만들어서 이동하는 것을 만들어보았다.
fragment A, B 두개를 만들고,
A에 viewModel을 붙여서 liveData값을 하나 만들어줬다.
(문제발생 : 네비게이션으로 이동시, 뷰모델의 라이브데이터 값 유지가 안되는 문제)
A -> B -> A 로 이동했는데, ( findnavigaton.navigae()로 )
A의 viewModel에 있는 liveData의 값이 유지되지 않고, 새로 만들어지는 것 같았다.
그래서 오픈채팅방에 질문을 해보았는데,
단순히 navigate()를 하게 되면, A가 다시 새로 만들어지게 되는 것이라는 것을 알았다.
프레그먼트가 다시 만들어지면, 뷰모델도 같이 새로 만들어지는 듯 하다.
(해결)
viewModel의 값이 유지되려면, A가 새로 만들어지면 안되고,
navigateUp() 또는,
popupbackstack() 를 이용해서
A로 다시 이동해줘야한다.
(앞으로 할 것)
네비게이션 코드랩만으로는 네비게이션 기능을 완전히 알기 부족하고,
네이게이션 문서를 다시 한번 싹 다 봐둬야겠다.
그리고 의문이 드는 내용은 연습삼아서 5번째 버튼을 업그레이드 해야겠다.
단순히 이동만 만들어봤는데 시간이 꽤나 걸렸다.
연습을 더 해봐야함.
'Personal project > 50Buttons' 카테고리의 다른 글
4번째 버튼을 만들면서.. fragment 생명주기..? (0) | 2023.05.30 |
---|---|
뷰바인딩에서 tools:viewBindingIgnore의 의미? (0) | 2023.05.23 |
android .gitignore 파일을 수정해보자. (0) | 2023.05.23 |
String과 CharSequence의 차이점?이 궁금했다. (0) | 2023.05.23 |
프로젝트 개요 (0) | 2023.05.20 |