Navigation - boostcampwm-2024/and04-Nature-Album GitHub Wiki
โ ์งํํ ๊ธฐ๋ฅ
์นด๋ฉ๋ผ ์คํ ๋ฐ ์ดฌ์,์ ์ฅ ์๋ฃ์ ํ๋ฉด ์ ํํ๋ ์ฝ๋๋ฅผ
HomeScreen
์์ NatureAlbumNavHost
์ผ๋ก ์ด๋
๐ก๋ฌธ์ ํด๊ฒฐ ๊ณผ์ ๊ธฐ๋ก
โ ์๋ฌธ ์ฌํญ
์นด๋ฉ๋ผ ์คํํ๋ ์ฝ๋๊ฐ HomeScreen์ ์์ผ๋ฉด ์ฌ์ง ์ ์ฅ(์จ๋ฒ์ถ๊ฐ) ํ๋ฉด์์ ๋ค๋ก๊ฐ๊ธฐ ํน์ ์ทจ์๋ฅผ ๋๋ ์๋ ์นด๋ฉ๋ผ๋ก ๋ฐ๋ก ๋์๊ฐ์ง ๋ชปํ๋๊ฒ ์๋๊ฐ??
๐ก ์๋ฌธ ํด๊ฒฐ
Intent๋ก ์คํํด ๋ฐฑ์คํ์ ๋จ์์์ง ์์ ์นด๋ฉ๋ผ๋ก ๊ฐ๋จํ ๋์๊ฐ์ง๋ ๋ชปํ๋คโฆ!
HomeScreen
์์ NatureAlbumNavHost
์ผ๋ก ์ด๋์์ผ ๋ค๋ฅธ ์คํฌ๋ฆฐ์์ ์นด๋ฉ๋ผ ์ดฌ์์ ํ ์ ์๋๋ก ํ์
๐ฅ ํธ๋ฌ๋ธ ์ํ
-
NatureAlbumNavHost
์ ํ์ฌ ์ดฌ์ํ ์ฌ์ง์ด ์ ์ฅ๋ uri๋ฅผ ์ ์ฅํ๊ณ ์๊ณ , ๋ฐ์ณ ๋ฐ ์นด๋ฉ๋ผ๋ฅผ ์คํํ ํจ์ ์์ฑ -
View์์๋ ๋ฐฑ๋ฒํผ ํด๋ฆญ์ ๋์ํ๋ ํจ์๋ฅผ overrideํ ์ ์์๋๋ฐ ์ปดํฌ์ฆ์์๋ ์ด๋ป๊ฒ??
@OptIn(ExperimentalMaterial3Api::class) @Composable fun SavePhotoScreen( model: Any, // uri, Resource id, bitmap ๋ฑ๋ฑ.. ํ์ ์ด ํ์ ์ง์ด์ง์ง ์์ onBack: () -> Unit = {}, description: String = "", label: Label? = null, modifier: Modifier = Modifier ) { BackHandler(onBack = onBack) Scaffold( ...
BackHandler
์ฌ์ฉ!! -
๋ฐฑ์คํ ๊ด๋ฆฌ (ํ๊ณผ ์ฌ์ง ์ ์ฅ ํ๋ฉด์ฌ์ด์ ์นด๋ฉ๋ผ๋ฅผ ์คํํด์ผ ํด์ ๋ฐฑ์คํ ๊ด๋ฆฌ๊ฐ ์๋์ผ๋ก ๋์ง ์์)
if (result.resultCode == RESULT_OK) { navController.navigate(NavigateDestination.SavePhoto.route) { launchSingleTop = true } } else { navController.navigate(NavigateDestination.Home.route) { popUpTo(NavigateDestination.Home.route) { inclusive = false } launchSingleTop = true } }
์นด๋ฉ๋ผ ์คํ์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ํ๋ฉด ์ ํ
launchSingleTop = true
: ๋ฐฑ์คํ์ ๋ง์ง๋ง์ ํ์ฌ ๋ฃจํธ๊ฐ ์์๊ฒฝ์ฐ ๋ฐฑ์คํ์ ์ถ๊ฐํ์ง ์๊ณ ์คํpopUpTo(NavigateDestination.Home.route) { inclusive = false }
: Home ์์ SavePhoto๊ฐ ์์๋ SavePhoto๋ฅผ ์ ๊ฑฐํ๊ณ ์คํ
ํ ํ๋ฉด์์ ์นด๋ฉ๋ผ ๋ฒํผ ํด๋ฆญ์ ์นด๋ฉ๋ผ ์คํ
์นด๋ฉ๋ผ ์ดฌ์ ๋ฐ ์ ์ฅ ์๋ฃ์ SavePhoto ํ๋ฉด์ผ๋ก ์ ํ
์นด๋ฉ๋ผ ์ดฌ์ ์ทจ์์ Home ํ๋ฉด์ผ๋ก ์ ํ
SavePhoto ํ๋ฉด์์ ๋ฐฑ๋ฒํผ/์ทจ์๋ฒํผ ํด๋ฆญ์ ์นด๋ฉ๋ผ ์คํ