Android версии 11
Я отправляю HTTP-запрос на протокол NEXO, и когда я получаю ответ, срабатывает метод оплатыResult.collect. Сначала я попытался использовать намерение для перенаправления обратно в мое приложение здесь, внутри блока сбора, но это не сработало. Теперь я вызываю doTransactionTickets, который вызывает мой API, который затем запускает транзакциюResult.collect. Внутри этого места я пытаюсь перенаправить на другой фрагмент, чтобы вернуть приложение на передний план, но это не работает.
Код: Выделить всё
viewLifecycleOwner.lifecycleScope.launch {
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.CREATED) {
viewModel.paymentResult.collect {
Log.d("paymentTest", "The payment response has been received: $it")
lifecycleScope.launch {
viewModel.doTransactionTickets(
binding.noteText.editText?.text.toString(),
args.itemType,
args.itemId,
args.selectedTickets!!.tickets,
totalPrice.formatWithDecimalPlaces(),
args.date,
args.packItems?.result,
args.itemSeats,
client
)
}
}
}
}
viewLifecycleOwner.lifecycleScope.launch {
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.CREATED) {
viewModel.transactionResult.collect { item ->
val receipt = viewModel.receiptPdf.value?.let { PdfDocument(it) }
val ticket = viewModel.ticketPdf.value?.let { PdfDocument(it) }
Log.d("paymentTest", "Transaction done")
requireActivity().runOnUiThread {
findNavController().navigate(
R.id.action_checkoutFragment_to_confirmationFragment,
Bundle().apply {
putString("name", args.name)
putFloat("totalPrice", totalPrice.toFloat())
putString(
"ticketsDescription",
binding.summaryTicketBreakdown.text.toString()
)
putString("eventDateTime", args.date)
putString("orderNumber", item.toString())
putInt("itemType", args.itemType)
putBoolean("hasTimetable", args.hasTimetable)
putSerializable("receipt", receipt)
putSerializable("ticket", ticket)
})
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/799 ... -to-my-app