본문 바로가기
안드로이드 공부 & 앱

[안드로이드] JetPack Navigation 개념 정리 및 예제

by 문톰 2022. 4. 16.

1.Navigation이란

-사용자가 앱 내의 여러 콘텐츠를 탐색하고 그곳에 들어갔다 나올 수 있게 하는

상호작용을 의미합니다.(안드로이드 공식문서에서 나온 정의)

-주로 하나의 엑티비티에 여러개의 Fragment를 전환하는 것에 중점을 두어 설계가 되었습니다.

-화면(주로 Fragment)간의 전환이나 데이터 전달 등의 다양한 기능을 제공합니다.

(그 외의 딥링크나 더 다양한 기능이 있습니다)

 

2.Navigation의 구성요소

1)NavGraph(탐색 그래프)

-위의 그림은 하나의 엑티비티에 있는 Fragment들의 전개 방식을 시각적으로 표현했습니다

-그림에 보이는 화면 하나하나를 Destination(목적지)라고 부르고

화면의 경로를 표시한 화살표들을 action이라고 부릅니다.

-Destination(목적지)간에 경로를 action(화살표)으로 설정해 줄 수 있습니다.

 

2)NavHost

-Navigation Graph에서 destination(목적지)이라고 불리는 화면이 표시되는 빈 컨테이너 입니다.

 

3)NavController

-앱간의 이동이나 전환을 관리해주는 객체

-화면이동이 발생하면 NavController에게 전달되어 NavController가 컨테이너인 NavHost에 적절한 화면을 표시합니다.

 

 

 

3.Navigation의 장점

1)프래그먼트나 화면간의 관계를 한 눈에 볼 수 있음.

-부가적으로 이러한 장점은 개발자간의 커뮤니케이션 할 때에도 도움이된다.

 

2)별도의 프래그먼트 트랜잭션 및 스택관리를 할 필요가 없음

네비게이션이 백스택을 관리하는 방식

https://namjackson.tistory.com/28

 

[Android Jetpack] AAC Navigation Component - 1. Navigation 소개,구성 및 개요 , BackStack관리

Navigation Android Jetpack 의 AAC (Android Architecture Component) 컴포넌트중 Navigation에 대해 알아보자! 네비게이션은 앱내의 화면 이동 구현을 도와주는 AAC 라이브러리이다. AAC 라이브러리는 기존에..

namjackson.tistory.com

 

2-1)기존의 BottomNavigationView를 구현하기 위해 사용했던 코드

 

 

2-2)Navigation을 이용한 BottomNavigation 구현

-프래그먼트 매니저로 스택관리를 별도로 하지 않아서 구현하는 코드가 확연하게 줄어든 것을 확인 할 수 있습니다.

 

 

3)프래그먼트 간에 데이터를 전달하기 용이함.

-Safe Args가 제공되어서 fragment간에 전달할 사용할 데이터 타입을 미리 정의할 수 있고

별도의 타입 캐스팅 없이 편리하게 사용할 수 있습니다.

 

4)Up, back 버튼의 작업등을 간단하게 자동으로 처리해줌.

-아래의 그림들을 예로들면  첫번째 프래그먼트에서 두번째 프래그먼트로 이동하고 백버튼을 눌렀을 때 다시 첫번째 프래그먼트로 이동하는 백버튼 처리를 Navigation에서 자동으로 구현해준다.

 

 

4.Navigation 예제

1)Navigation으로 BottomNavigation 만들기

https://velog.io/@eoqkrskfk94/Jetpack-Navigation-Graph로-bottom-navigation-설정하기

 

Jetpack Navigation Graph로 bottom navigation 설정하기

Jetpack Navigation Graph를 이용해 bottom navigation 만드는 방법

velog.io

 

2)Navigation으로 Fragment간 데이터 전달

https://velog.io/@kkaemi/android-Navigation-Safe-Args를-사용하여-Fragment간-데이터전달

 

[android] Navigation Safe Args를 사용하여 Fragment간 데이터전달

Fragment 예제 코드를 보던 중 Navigation Components를 사용하여 Fragment를 전환하는 방법에 대해 접했다.Navigation Components는 Fragment를 좀 더 간단하고 안정적으로 이동하는데 도움을 준다.본인은 Android St

velog.io

 

 

 

참고

https://developer.android.com/guide/navigation

 

탐색  |  Android 개발자  |  Android Developers

Android Jetpack의 탐색 구성요소를 사용하여 앱에서 탐색 구현

developer.android.com

https://medium.com/nbt-tech/android-navigation-%EC%93%B8%EA%B9%8C%EB%A7%90%EA%B9%8C-964388a562e0

 

Android Navigation 쓸까말까

최근 Android Developers에 MAD Skills(Modern Android Development)이라는 섹션이 추가 되었습니다. “미친 기술”이라니!!! 왠지 개발 효율을 확 끌어올려 줄 수 있는 무언가가 있을 것만 같아 저도 모르게…

medium.com

https://choheeis.github.io/newblog//articles/2020-08/navigation

 

[안드로이드] 🗺 navigation이라는 것이 있다! | choheeis

[🗺 navigation이라는 것이 있다!]sunFlower 앱을 클론 코딩하면서 jetpack에 속한 정말 다양한 라이브러리들을 사용해보기 시작했다.그 중 가장 내용도 많고, 기본이 될 것만 같은 라이브러리인 navigatio

choheeis.github.io

 

댓글