Обработчик не работает в режиме создания реактивного ранцаAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Обработчик не работает в режиме создания реактивного ранца

Сообщение Anonymous »

Привет, я использую BackHandler из этого stackoverflow. Когда я нажимаю кнопку назад, она не работает. Может ли кто-нибудь помочь мне в этом?
ResultScreen.kt

Код: Выделить всё

@Composable
fun ResultScreen(navController: NavHostController, nearestResultList: List?) {
SportsResultTheme {
MainScaffold {
BackHandler {
navController.popBackStack()
}
LazyColumn {
if (nearestResultList != null) {
items(nearestResultList) { nearestResult ->
Text(
text = nearestResult.event
)
}
}
}
}
}
}
NavigationGraph.kt

Код: Выделить всё

@Composable
internal fun NavigationGraph() {
val navController = rememberNavController()
NavHost(navController = navController, startDestination = ScreenRoute.Home.route) {
composable(ScreenRoute.Home.route) {
SetupMainActivityView { nearestResult ->
val nearestResultJson = Uri.encode(Json.encodeToString(nearestResult))
navController.navigate(ScreenRoute.Result.route + "/$nearestResultJson")
}
}

composable(
ScreenRoute.Result.route + "/{$NEAREST_RESULT_JSON}",
arguments = listOf(
navArgument(NEAREST_RESULT_JSON) { type = NearestResultParamType() }
)
) { backStackEntry ->
ResultScreen(navController, backStackEntry.arguments?.getParcelableArrayList(NEAREST_RESULT_JSON))
}
}
}
Если вы хотите увидеть больше, посетите мой репозиторий.
ОБНОВЛЕНИЕ
Вы можете посмотреть мое видео по ссылке. Кто-нибудь знает, почему у меня щелкает экран, когда я нажимаю кнопку назад?
ОБНОВЛЕНИЕ 2
Я добавил заставку в свою навигацию< /p>

Код: Выделить всё

@Composable
internal fun NavigationGraph() {
val navController = rememberNavController()
NavHost(navController = navController, startDestination = ScreenRoute.Splash.route) {

composable(route = ScreenRoute.Splash.route) {
SplashScreen(navController = navController)
}

composable(ScreenRoute.Home.route) {
SetupMainActivityView { nearestResult ->
val nearestResultJson = Uri.encode(Json.encodeToString(nearestResult))
navController.navigate(ScreenRoute.Result.route + "/$nearestResultJson") {
popUpTo(navController.graph.findStartDestination().id) {
saveState = true
}
launchSingleTop = true
restoreState = true
}
}
}

composable(
ScreenRoute.Result.route + "/{$NEAREST_RESULT_JSON}",
arguments = listOf(
navArgument(NEAREST_RESULT_JSON) { type = NearestResultParamType() }
)
) { backStackEntry ->
ResultScreen(navController, backStackEntry.arguments?.getParcelableArrayList(NEAREST_RESULT_JSON))
}
}
}
ОБНОВЛЕНИЕ 3

Код: Выделить всё

navController.navigate(ScreenRoute.Result.route + "/$nearestResultJson") {
popUpTo(ScreenRoute.Home.route) {
saveState = true
}
launchSingleTop = true
restoreState = true
}
Назад не работает, когда я добавил заставку
ОБНОВЛЕНИЕ 4

Код: Выделить всё

@Composable
internal fun NavigationGraph() {
val navController = rememberNavController()
var home by remember {
mutableStateOf(null)
}
NavHost(navController = navController, startDestination = home ?: ScreenRoute.Splash.route) {

composable(route = ScreenRoute.Splash.route) {
home = ScreenRoute.Home.route
SplashScreen(navController = navController)
}

composable(ScreenRoute.Home.route) {
SetupMainActivityView { nearestResult ->
val nearestResultJson = Uri.encode(Json.encodeToString(nearestResult))
navController.navigate(ScreenRoute.Result.route + "/$nearestResultJson") {
popUpTo(navController.graph.findStartDestination().id) {
saveState = true
}
launchSingleTop = true
restoreState = true
}
}
}

composable(
ScreenRoute.Result.route + "/{$NEAREST_RESULT_JSON}",
arguments = listOf(
navArgument(NEAREST_RESULT_JSON) { type = NearestResultParamType() }
)
) { backStackEntry ->
ResultScreen(navController, backStackEntry.arguments?.getParcelableArrayList(NEAREST_RESULT_JSON))
}
}
}
Мой экран-заставка не работает при начальной загрузке приложения. Он сразу открывает мой главный экран после того, как кнопка возврата на экран снова не работает.

Подробнее здесь: https://stackoverflow.com/questions/730 ... ck-compose
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»