안드로이드 네비게이션은 2.8 버전 이후로 Kotlin-Serializable 기반 타입 안정성 시스템이 도입됐다.
이전에는 뭔가 나사 하나 빠진듯한 라이브러리였는데 이제야 좀 그럴듯해졌다.
이거말고도 네비게이션은 버그가 참 많았던거 같은데 그런거도 많이 잡힌거 같다.
암튼 2.8 버전으로 달라진게 뭐냐면 아래처럼 화면을 이동할 수 있다.
@Serializable
object Adata
@Serializable
data class Bdata(val id: String)
NavHost(navController, startDestination = Home) {
composable<Adata> {
AScreen(onNaivateTo = { id →
navController.navigate(Bdata(id))
})
composable<Bdata> { backStackEntry ->
val bdata: Bdata = backStackEntry.toRoute()
Bscreen(bdata)
}
}
진짜 멋지다.
이전에는 string 형태로 경로를 만들어주고 / 나 ? 를 이용해서 argument 를 넘겨주는 방식으로 처리했는데
argument 가 필요없는 화면은 object 로 필요한 화면은 data class 를 이용해서 정의할 수 있게 됐다.
훨씬 보기편하고 깔끔해졌다.
navController.navigate(Bdata(id))
이렇게 써주면 Bscreen 으로 이동하면서 동시에 id 도 넘겨줄 수 있게 되는것이다.
또또 달라진게 있다.
기존에는 프리미티브 타입들을 제외하곤 넘기려면 json 으로 string 변환해서 넘긴다던지 불편하게 처리했어야했는데
이제는
이 링크를 보면 커스텀하게 NavType 을 정의해서 전달 할 수 있게 됐다
만세!
오늘도 감사합니다 구글님
반응형
'Android' 카테고리의 다른 글
MVI 를 찍먹해보자. (1) | 2025.01.19 |
---|---|
안드로이드의 암호화 (3) | 2024.10.12 |
사실 내 로망중엔 OpenGL 도 있었어 (1) | 2024.08.31 |
라이브러리를 배포해보자. (0) | 2024.08.24 |
코루틴의 Dispatcher 를 Hilt Singleton으로 주입해보자 (0) | 2024.08.17 |
[다시 만들어보는 클린아키텍쳐] 모듈구성 편 (0) | 2024.08.12 |
[다시 만들어보는 클린아키텍쳐] build-logic 편 (0) | 2024.07.31 |
[다시 만들어보는 클린아키텍쳐] 모듈분리 편 (1) | 2024.07.25 |