Jetpack Navigation-2 기초 사용법

seong-hwan Kim
shDev
Published in
3 min readJan 19, 2021

Jetpack Navigation-1 기초 및 구성 요소
Jetpack Navigation-2 기초 사용법 ← Here

Navigate to destination

내비게이션 설정이 끝난 후 destination 사이의 이동을 구현하기 위해서는 NavController 객체의 navigate() 메서드를 사용합니다.

메서드의 파라미터로 target destination의 id와 argument(Bundle), option(NavOption)이 전달될 수 있습니다.

Safe args plugin

내비게이션 컴포넌트는 safe args 그래들 플러그인을 제공합니다. 해당 플러그인을 사용하여 타입에 안전한 파라미터 전달과 파라미터에 대해 쉬운 접근이 가능합니다.

safe args 플러그인은 내비게이션 그래프에 정의된 action 노드와 target destination의 argument 노드에 대해 자동으로 클래스를 생성합니다.

Generated class

safe args 플러그인은 내비게이션 그래프에 정의된 action 노드로부터 source destination의 클래스 명에 “Directions”가 결합된 클래스를 자동으로 생성합니다. 생성된 클래스는 action 노드에 해당하는 static 메서드를 가집니다.

해당 메서드는 action의 target destination에서 정의된 argument를 메서드의 파라미터로 받으며 NavDirections 객체를 반환합니다. NavDirections 객체는 NavController의 navigate() 메서드의 파라미터로 사용할 수 있습니다.

내비게이션 그래프가 위와 같이 구성된다면, 각각의 action과 argument에 대해 HomeFragmentDirections, FlowStepFragmentArgs 클래스가 생성됩니다.

HomeFragmentDirections는 action의 id에 해당하는 nextAction static 메서드를 가지며 flow_step_one_dest에서 요구하는 argument를 넘겨주기 위해 flowStepNumber를 메서드의 파라미터로 받습니다.

Navigation using plugin

플러그인을 사용한 내비게이션은 다음과 같이 수행할 수 있습니다.

Access to argument

파라미터를 받은 FlowStepFragmentFlowStepFragmentArgs클래스에 접근하여 파라미터를 안전하게 얻을 수 있습니다.

참고

Android Developers-Navigation

Codelab-Navigation

Github-architecture-components-samples/NavigationBasicSample

Youtube-MAD Skills(Navigation)

--

--