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
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-설정하기
2)Navigation으로 Fragment간 데이터 전달
https://velog.io/@kkaemi/android-Navigation-Safe-Args를-사용하여-Fragment간-데이터전달
참고
https://developer.android.com/guide/navigation
https://medium.com/nbt-tech/android-navigation-%EC%93%B8%EA%B9%8C%EB%A7%90%EA%B9%8C-964388a562e0
https://choheeis.github.io/newblog//articles/2020-08/navigation
'안드로이드 공부 & 앱' 카테고리의 다른 글
[안드로이드/Kotlin] DiffUtill + RecyclerView 개념 정리 및 Tip (0) | 2022.05.14 |
---|---|
안드로이드 CleanArchitecture 개념 정리 및 구현 (0) | 2022.04.21 |
[안드로이드] 버튼 클릭 리스너로 확인하는 옵저버 패턴-1편 (0) | 2022.04.13 |
운동친구 어플 레이아웃 설계화면 (0) | 2022.02.12 |
[안드로이드/코틀린] activityResultLauncher(ActivityForResult 대체) (0) | 2022.02.02 |
댓글