📱 Android

[Jetpack] Navigation Component #2 args 전달하기

콩드로이드 2023. 5. 1. 19:06

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

 

GitHub - eunie9498/JetpackExam: Jetpack Navigation Component

Jetpack Navigation Component . Contribute to eunie9498/JetpackExam development by creating an account on GitHub.

github.com