args 전달하는 건 아주 간단해요
왜냐하면
우리가 1탄에서 사용했던 action.arguments가 Bundle이기 때문이져 :)
bundle이라면, put / get을 사용하면 되겠죠 !
nav_graph.xml에서 Design 탭을 누르면 Arguments가 있어요
Add Argument를 누르면 type에서 원시타입 말고도 custom 타입도 가능합니다 :)
진짜 편리한거같아여
Argument를 받을 Fragment에 선언해줍니다 !
testArgs로 Argument를 생성하면 nav_graph.xml에 자동으로 선언되어 있습니다
자 이걸 소스에서 연결해봅시다
MainFragment -> GridFragment로 전달하는 과정입니다
1️⃣ args를 전달하는 부분 (MainFragment)
nav_graph에서 생성했던 name, type으로 parameter가 생겨있기에 아래처럼 작업하면 됩니다
val action = MainFragmentDirections.toGrid("제대로 전달되었습니다")
view.findNavController().navigate(action)
2️⃣ args를 전달받는 부분 (GridFragment)
nav_graph에서 GridFragment에 argument를 생성했으므로 자동으로 GridFragmentArgs가 생성되어있습니다
기존에 Fragment에서 Bundle을 가져오는 방법과 동일하게 Bundle을 가져와서 fromBundle에 넣어줍니다 :)
그리고 나서 우리가 생성했던 argument인 testArgs를 가져오면 됩니다 ㅎㅎ
테스트하면 아래와 같이 결과가 나와요 (투박하지만...)
오늘은 간단한 예제였어요 !
다음은 Mock API를 사용해서 각각 grid, list로 나타내는 예제로 가져오겠습니다
마찬가지로 소스는 아래에 있어요 :)
https://github.com/eunie9498/JetpackExam