2024/12 3

안드로이드 컴포즈 네비게이션 startDestination 에 argument 전달하기

이 글은 컴포즈 네비게이션 2.7 버전을 기준으로 작성됐다. 네비게이션을 쓰다가 startDestination 로 시작하는 화면에서 바로 argument 를 전달하고 싶을수도 있다.처음 시작하는 화면에서 쓰이고 있는 hiltViewModel 에서 SavedStateHandle  에 argument 로 던진 데이터를viewModel 이 시작될때부터 가지고 있어야하는 상황이라던가 그럴때 말이다. 그런데 argument 를  startDestination 경로에 넣으면 SavedStateHandle 에서 값을 가져오질 못한다.정확하게 찾진 못했는데 startDestination 는 정적인 경로만 등록이 가능하다는거 같다. 이때 arguments 를 등록하는 곳에 defaultValue 를 전달하고자 하는 값을..

컴포즈 네비게이션 2.8 이후

안드로이드 네비게이션은 2.8 버전 이후로 Kotlin-Serializable 기반 타입 안정성 시스템이 도입됐다.이전에는 뭔가 나사 하나 빠진듯한 라이브러리였는데 이제야 좀 그럴듯해졌다.이거말고도 네비게이션은 버그가 참 많았던거 같은데 그런거도 많이 잡힌거 같다. 암튼 2.8 버전으로 달라진게 뭐냐면 아래처럼 화면을 이동할 수 있다. @Serializableobject Adata@Serializabledata class Bdata(val id: String)NavHost(navController, startDestination = Home) { composable { AScreen(onNaivateTo = { id → navController.navigate(Bdata(id)) }..

Android 2024.12.17

어쩐지 계속 잡담만 쓰는거 같지만

솔직히 요즘 블로그 쓰는게 귀찮다.써봐야겠다 라고 쌓아둔 소재는 많은데 글 쓰는게 그냥 귀찮은거 같다.글도 계속 안쓰니까 블로그 들어오는 사람도 확 줄어든게 느껴진다.뭐 그런거 신경쓰면서 썼던건 아니긴 하지만 기술적인 내용이 아니더라도 꾸준히 내 개발자 인생은 귀찮아도 기록을 남기려한다. 요즘은 설계를 많이하고 있다.바쁘다는 핑계로 그냥 시작하는게 빠르다는 핑계로 개발부터 먼저했던 습관을 버리는데 꽤 고생을 했다.요구사항을 분석하고 누가 읽어도 무슨 기능이 어디에 있어야겠구나를 알 수 있을 정도로간결하지만 명확하게 설계서를 적어내는건 나 뿐만 아니라 이걸 보고 개발에 참여할 사람들을충분히 고려해야 했기에 변수명 함수명 적는거 하나에도 신중해야했고코드 컨벤션을 항상 생각하면서 적어야했다. 그래도 이게 익숙..

잡담 2024.12.02