아래 글과 그림은 Navigating 순서를 나타낸다
1. res 안에 navigation graph 추가
2. navigation control 권한을 주기 위해 Nav Host Fragment가 필요하므로 이를 추가
3. 비어있는 navigation graph 채우기
4. navigation graph 안의 fragments 간 연결(action 생성)
5. (custom 가능) onClickListener 설정 ( graph에서 설정한 action을 click시 수행하기 위해 )
6. onClickListener 안에서 navigating을 가능케 하는 Navigation Controller 찾기
7. 설정한 action으로 navigate 수행하기
1. res 안에 navigation graph 추가
2. navigation control 권한을 주기 위해 Nav Host Fragment가 필요하므로 이를 추가
3. 비어있는 navigation graph 채우기
4. navigation graph 안의 fragments 간 연결
5. (custom 가능) onClickListener 설정 ( graph에서 설정한 action을 click시 수행하기 위해 )
6. onClickListener 안에서 navigating을 가능케 하는 Navigation Controller 찾기
Nav Host Fragment 설정을 2번에서 해놓았기 때문에
해당 fragment 내의 뷰 계층에서는 Nav Host Fragment가 parent 역할을 한다.
결국 이 fragment 안의 계층에 속해 있다면 어떤 뷰이더라도 Nav Host Fragment 를 찾아갈 수 있다.
navigation은 helper function으로 findNavController를 두고 있다.
findNavController은 view를 취하면서 그 view의 Nav Host Fragment를 찾아주고,
Navigation Controller를 반환한다.
7. 설정한 action으로 navigate 수행하기
위에서 찾은 controller 가 갖고 있는 navigate(action) 함수를 이용한다.
+ 안드로이드 KTX dependencies를 이용한다면
아래처럼 코드를 더 깔끔하게 바꿀 수 있다.
1번)
2번)
'> Android' 카테고리의 다른 글
[Android] Chains (0) | 2020.09.20 |
---|---|
[Android] Bias (0) | 2020.09.20 |
[Android] findViewById, ViewBinding, DataBinding (0) | 2020.09.20 |
[Android] Hide keyboard 키보드 숨기기 (with Kotlin) (0) | 2020.09.20 |
[Android] Button style=Widget.AppCompat.Button.Colored (0) | 2020.09.20 |
댓글