Android Nested navigation graphs

사용 언어: Kotlin 1.8.10
사용 버전: Android Studio Electric Eel 2022.1.1 Patch 2

안드로이드 Nested navigation graphs를 알아보겠습니다.


네스티드 내비게이션 그래프는 여러 내비게이션 그래프를 하나로 묶어서 표현할 수 있습니다.
재사용성이 좋습니다.

Nested navigation graphs의 문서입니다.
https://developer.android.com/guide/navigation/navigation-nested-graphs


BottomNavigationView를 사용할 경우, Nested navigtion을 사용하지 않으면 하이라이트가 제대로 작동하지 않는 버그가 발생합니다.

아래를 보시면, History에서 Single을 눌렀음에도 하이라이트는 History에 고정되어 있습니다. 색깔이 잘 안 보이네요.





이러한 문제를 해결하려면 필요한 게 Nested navigation입니다.



아래와 같은 그래프가 있습니다.

여기서 settingsFragment의 경우 두 군데에서 호출되므로 Nested로 만들고, 그리고 titleFragment와 연결된 fragment는 bottomNavigation의 Single 탭에 넣어야 하므로 Nested로 만듭니다.






원하는 것들을 선택한 다음, 







상단에 있는 Group into nested graph를 누릅니다.





그럼 그래프가 이렇게 변경됩니다.




우 클릭하고 Open을 누릅니다.







그러면 이렇게 Group 안으로 들어와집니다.







Assign Start Destination으로 원하는 처음 뷰를 선택해서 눌러줍니다.





우측에서 id 항목을 원하는 이름으로 변경해 줍니다.

저 같은 경우는 TitleNavigation으로 변경했습니다.









불필요한 부분은 cut 한 뒤, 밖에서 paste 합니다.








다음과 같은 화면이 됩니다.





여기서 저는 Settings와 license가 여러 군데에서 필요하므로 또 Nested로 만듭니다.






방금 만든 SettingNavigation을 복사해서 






TitleNavigation 안에 붙여넣기 합니다.






다음과 같이 그래프가 만들어집니다.





SettingNavigation에 연결합니다.






밖으로 나와서 원래 Start 여야 하는 TitleNaivgation을 Start로 만듭니다.







multipleFragment는 SettingNavigation과 연결합니다.





history가 Title 안에 포함되어 있었네요.

history를 밖으로 꺼내줍니다.


만약 Nested Navigation에 argument를 넘겨야 한다면, 다음과 같이 code로 전환한 다음, action 안에 argument를 적어주면 됩니다.






생각보다 내부적으로 변경해야 하는 것들이 많아서 최종적으로는 이렇게 변경되었습니다.











그리고, BottomNavigation에 들어가는 menu로 갑니다.

item의 id들을 방금 만든 Nested id와 동일하게 적어줍니다.






실행해 봅시다.






끝.



카테고리: Android

댓글

이 블로그의 인기 게시물

Python OpenCV 빈 화면 만들기

Python urllib.parse.quote()

Python bytes.fromhex()

Android AVD Ram size change

Forensics .pyc 파일 .py로 복구하기

Android Minimum touch target size

KiCad 시작하기 7 (FreeRoute 사용하기 2)

Android Notification with Full Screen

C++ OpenCV 모폴로지 침식, 팽창

KiCad 시작하기 2 (PCB 만들기)