본문 바로가기
> Android

[Android] Navigate, navigation

by bky373 2020. 9. 20.

아래 글과 그림은 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번)

출처 : classroom.udacity.com/courses/ud9012

댓글