Привет! Возьмите свой кофе ☕️ и узнайте, как вернуться назад с данными в Jetpack Compose.
Зависимость
Прежде всего, давайте добавим зависимость в файл :app/build.gradle.kts
.
dependencies { implementation("androidx.navigation:navigation-compose:2.6.0") }
Настройка навигации
Откройте MainActivity.kt
и давайте создадим navController
, NavHost
и экраны.
class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { ContentTheme { val navController = rememberNavController() NavHost(navController = navController, startDestination = "first") { composable("first") { // ... } composable("second") { // ... } } } } } }
Реализация первого экрана
Здесь мы будем использовать NavBackStackEntry
. Это позволяет нам получить доступ к SavedStateHandle
и получить сообщение.
SavedStateHandle
— позволяет сохранять и восстанавливать данные.
composable("first") { entry -> val message = entry.savedStateHandle.get<String>("message") Column { Text(text = message.orEmpty()) Button( onClick = { navController.navigate("second") } ) { Text(text = "Next screen") } } }
Реализация второго экрана
Когда мы вернемся назад, мы будем использовать previousBackStackEntry
из navController
. Это позволяет нам устанавливать значения в SavedStateHandle
.
composable("second") { Button( onClick = { navController.previousBackStackEntry ?.savedStateHandle ?.set("message", "Hello World!") navController.popBackStack() } ) { Text(text = "Navigate back with message") } }
Я надеюсь, что эта статья помогла вам в вашем развитии. Не забудьте оставаться в курсе моих последних материалов, следуя за мной и подписавшись на информационный бюллетень. Спасибо за чтение!
Я также веду канал YouTube, посвященный разработке Android, где делюсь информативным контентом. Если вам интересно расширить свои знания в этой области, обязательно подпишитесь на мой канал.