Jetpack создает типобезопасную навигацию, сбойAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Jetpack создает типобезопасную навигацию, сбой

Сообщение Anonymous »

Не удалось восстановить стек навигации: пункт назначения 30355061 не найден из текущего пункта назначения mj0(0x0) startDestination={oj0(0x2e873c) Route=x.x.x.x.composeNavigation.MenuScreen
У меня есть проект создания реактивного ранца, в котором я использую типобезопасную навигацию и вижу много сбоев в Firebase.

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

import kotlinx.serialization.Serializable

@Serializable
object QrCodeScreenScanner

@Serializable
data class OtpScreen(val otpCode: String)

@Serializable
data class SignatureDataOverviewScreen(val transactionId: String, val payload: String)

@Serializable
data class SignatureHashOverlayScreen(val otpCode: String)

@Serializable
object MenuScreen

@Serializable
object AskForNotificationPermissionScreen

@Serializable
data class UpdateNeededScreen(val cancellable: Boolean)

class MenuActivity : ComponentActivity() {

companion object {
const val ENROLMENT_COMPLETED = "ENROLMENT_COMPLETED"
}

private val navigator: Navigator by inject { parametersOf(this@MenuActivity) }
private val menuViewModel: MenuViewModel by viewModel()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val navController = rememberNavController()
var permissionDialogScreenAlreadyShowed = remember { false }

Theme {
NavHost(navController = navController, startDestination = MenuScreen) {
composable {
val uiState by menuViewModel.uiState.collectAsStateWithLifecycle()
MenuScreen(
uiState = uiState,
navigator = navigator,
navigateToAskForNotificationPermission = {
navController.navigate(AskForNotificationPermissionScreen)
},
enrolmentStates = menuViewModel.subscribeToEnrolmentState(),
permissionDialogScreenAlreadyShowed = permissionDialogScreenAlreadyShowed,
uiEvents = menuViewModel.uiEvent,
isOnline = menuViewModel.isOnline,
menuItemIntentAction = menuViewModel::setMenuViewModelIntent,
appUpdateCheckNeeded = menuViewModel.appUpdateCheckNeeded,
navigateToShowUpdateScreen = { cancellable ->
navController.navigate(UpdateNeededScreen(cancellable))
},
)
}
composable {
RequestNotificationPermissionScreen(
navigateToMenuScreen = {
permissionDialogScreenAlreadyShowed = true
navController.navigate(MenuScreen)
}
)
}
composable {
ShowAppUpdateScreen(
cancellable = true,
navigateToMenuScreen = {
navController.navigate(MenuScreen)
}
)
}
}
}
}
}

override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)

intent.extras?.let { extras ->
val confirmationToken =
extras.getString(this.getString(R.string.ENROLMENT_CHALLENGE), "")
val deviceName =
extras.getString(this.getString(R.string.ENROLMENT_DEVICENAME), "")

Timber.d("Confirmation token: %s", confirmationToken ?: "(empty)")
Timber.d("DeviceName: %s", deviceName ?: "(empty)")
if (!confirmationToken.isNullOrBlank() &&  !deviceName.isNullOrBlank()) {
menuViewModel.setMenuViewModelIntent(
MenuViewModelIntent.ProcessEnrolment(
confirmationToken = confirmationToken,
deviceName = deviceName
)
)
return
}
val isEnrolmentCompleted = extras.getBoolean(ENROLMENT_COMPLETED, false)
if (isEnrolmentCompleted) {
navigator.navigateTo(NavigatorRoute.ENROLMENT_COMPLETED)
}
}
}
}
У меня многомодульная архитектура, в которой каждый модуль имеет свой граф навигации.
Кто-нибудь сталкивался с этой проблемой раньше? Я использую новый способ навигации, обеспечивающий безопасность типов. Локально все работает как положено, но я вижу много ошибок в сбоях Firebase. Почему?

Подробнее здесь: https://stackoverflow.com/questions/789 ... tion-crash
Ответить

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

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

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

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

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