Personal project/50Buttons

5번째 버튼 jetpack navigation 연습

닉네임도항상고민 2023. 6. 21. 14:00

버튼이 있는 액티비티를 여러개 만들면서 예제를 만들어보는 프로젝트중이다.

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번째 버튼을 업그레이드 해야겠다.

 

단순히 이동만 만들어봤는데 시간이 꽤나 걸렸다.

연습을 더 해봐야함.