์ด์ ํฌ์คํ
https://rkdrkd-history.tistory.com/50
[Android, Kotlin] Compose UI ์ ๋ฆฌ(6)
์ด๋ฒ ํฌ์คํ ์์๋ compose ui๋ก bottom navigation์ ๋ง๋๋ ์์ ๋ฅผ ์ ๋ฆฌํด ๋ณผ ๊ฒ์ด๋ค. ์ด์ ํฌ์คํ https://rkdrkd-history.tistory.com/46 [Android, Kotlin] Compose UI ๊ธฐ๋ก(5) ์ด๋ฒ ํฌ์คํ ์์๋ compose UI ๊ณต๋ถํ๋ ๋ด์ฉ
rkdrkd-history.tistory.com
์ด๋ฒ ํฌ์คํ ์์๋ ํ์๊ฐ compose๋ฅผ ์ฌ์ฉํ๋ค๊ฐ ์๊ฒ ๋ ์ ๋ณด๋ฅผ ๋์ ์ฌ๋ณด๊ฒ ๋ค.
์ด๋ฒ์ ์๊ฒ ๋ ์ ๋ณด๋ ์ ๋ชฉ ๋ณด๋ฉด ์ ์ ์๋ฏ์ด ํ๋ฉด์ ํ(navigate) ๋์ค ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋๋ก ํ๊ฒ ๋ค.
(compose navigate ๋์ค ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ํ์์ ์ฌ์ฉํ๋ intent์ putextra์ ๋น์ทํ๋ค.)
ํ์๊ฐ ์์ง ์ ๋๋ก ์ดํดํ ๊ฒ ์๋๋ผ์ ์ค๋ช ์ด ๋ถ์กฑํ ์ ์์ผ๋ ์ํด ๋ฐ๋๋ค.
์๋ฌดํผ ์ก๋ด์ ์ฌ๊ธฐ๊น์ง ํ๊ณ ์ง์ง๋ก ์์๋ณด๋๋ก ํ์.
1. ์ ๋ฌํ ๋ฐ์ดํฐ ๋ฃ๊ธฐ
ํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ค๋ฉด ํ๋ฉด์ ๊ตฌ์ฑ์ด ์ ๋ฌํ๋ ์ชฝ๊ณผ ์ ๋ฌ๋ฐ๋ ์ชฝ์ด ์์ ๊ฑด๋ฐ, ๋จผ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ์ชฝ์์ ์์ ์ ํด์ฃผ๋๋ก ํ์.
(ํ์์ ๊ฒฝ์ฐ์๋ data class ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํด์ผ ํ์๋ค.)
navController.currentBackStackEntry?.savedStateHandle?.set(key = "key string", value = value)
navController.navigate("route")
key์๋ putExtra ์ฌ์ฉํ ๋์ฒ๋ผ ์ ๋ฌํ ๋ฐ์ดํฐ์ key๊ฐ์ ๋ฃ๊ณ , value์ ์์ ์ด ์ง์ง๋ก ์ ๋ฌํ๊ณ ์ถ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ผ๋ฉด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ ๋ฒ์งธ ์ค์ ์ด๋ํ screen์ route๋ฅผ ๋ฃ๋๋ค.
(์์)
navController.currentBackStackEntry?.savedStateHandle?.set(key = "data", value = movieItemData)
navController.navigate(Screen.Detail.route)
2. ๋ฐ์ดํฐ ๋ฐ์์ค๊ธฐ
์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ฉด ๋๋๋ฐ, ํ์์ ๊ฒฝ์ฐ์๋ navhost ์์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์๋ค.
composable("route") {
val data = remember {
navController.previousBackStackEntry?.savedStateHandle?.get<MovieItemData>("key string")
}
// TODO
}
์ ๋ฌํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ data ๋ณ์๋ฅผ ๋ง๋ค์ด์ค๋ค.(๋ค์ key๊ฐ์ ์ ๋ฌํ key๊ฐ๊ณผ ๊ฐ์์ผ ํ๋ค.)
(์์)
composable(Screen.Detail.route) {
val data = remember {
navController.previousBackStackEntry?.savedStateHandle?.get<MovieItemData>("data")
}
DetailScreen(data)
}
ํ์์ ์์์์๋ data๋ฅผ ๋ฐ์์์ detailScreen์์ ํ์ฉํ๋ค.
์ ๋ฆฌ
ํ์๊ฐ ์ฒ์ ๊ฒ์ํ์ ๋๋ ๊ฒ์ํด๋ ํ๋ ค์๋ ์ ๋ณด๊ฐ ๋ง์ง ์์์ ์ ๋จน์์๋๋ฐ, ์ด๋ ํ ๋ถ(?)์ ๋์์ผ๋ก ๋ฌด์ฌํ navigate ํ ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์์๋ค.(๊ฐ์ฌํฉ๋๋ค(๊พธ๋ฒ ))
์ฐธ๊ณ ํ ๋ธ๋ก๊ทธ
[Android/Compose] navigation/๋ค๋น๊ฒ์ด์ ๊ตฌํ
Intent๋ฅผ ์ปดํฌ์ฆ์์์ Navigation์ผ๋ก ๊ฐ๋จํ๊ฒ ๊ตฌํํ๋ ๋ฐฉ๋ฒ ! Navigation Route MainActivity
velog.io
์์ง compose์ ๋ํ ์ ๋ณด๊ฐ ๋ง์ด ์ ํ๋ ค์๋ ๊ฒ ๊ฐ์์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ค๊ณ ๊ฒ์ํ ๋์๋ ์ ๋จน์ ๊ฒ ๊ฐ๋ค.
๋นจ๋ฆฌ ์์ฉํ๊ฐ ์๋ฃ๋ผ์ ๋ง์ด ์ ๋ณด๊ฐ ํ๋ ธ์ผ๋ฉด ์ข๊ฒ ๋ค.
'๐ฑ| Android > ๐ | Jetpack' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Android, Kotlin] compose navigation์์ data class tpye ๋๊ธฐ๊ธฐ (2) | 2023.08.11 |
---|---|
[Android, Kotlin] compose์์ api ํต์ ํ๊ธฐ (2) | 2023.08.03 |
[Android, Kotlin] Compose UI ์ ๋ฆฌ(6) (0) | 2023.04.07 |
[Android, Kotlin] Android Activity์ lifeCycle ์ ๋ฆฌ (0) | 2023.03.17 |
[Android, Kotlin] Compose UI ์ ๋ฆฌ(5) (0) | 2023.03.13 |