Jetpack Compose + AndroidViewBinding Backpress закроет приложение
у меня естьnavhostfragment
внутриAndroidViewBinding
в составной функции. Однако когда я нажимаю кнопку «Назад» на телефоне, приложение закрывается. Как мне избежать этого и просто подняться в бэкстек.
@Composable
fun MyComposeScreen() {
AndroidViewBinding(FragmentLoginBinding::inflate)
}
ФрагментВойтиПривязка
<androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:defaultNavHost="true"
app:navGraph="@navigation/login_navigation" />
</androidx.constraintlayout.widget.ConstraintLayout>
1 ответ
Вы можете использоватьBackHandler
Компонуемый, предоставленныйandroidx.activity.compose
библиотека:
implementation "androidx.activity:activity-compose:1.4.0"
Затем измените свойMyComposeScreen
@Composable
fun MyComposeScreen() {
val navController = rememberNavController()
val backDispatcher = LocalOnBackPressedDispatcherOwner.current?.onBackPressedDispatcher
AndroidViewBinding(FragmentLoginBinding::inflate) {
val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val inflater = navHostFragment.navController.navInflater
val graph = inflater.inflate(R.navigation.login_navigation)
navController.graph = graph
navController.setBackStackEntryCount(1)
BackHandler(backDispatcher) {
navController.navigateUp()
}
}
}