UI не высвечивает действия, после успешной поимки result во fragmentResultListener

Из Фрагмента А я жму на button, открывается ДиалогФрагмент B, в котором один из вариантов действий вызывает ДиалогФрагмент C. Если в нем я жму positiveButton, то я отсылаю в Главный фрагмент A некий result (который в логах видно что успешно ловится) и закрываю ДиалогФрагмент C и B закрываются следующим образом:

    setFragmentResult("cat_del_request", bundleOf("cat_del_result" to viewModel.result))
    val action = DeleteAllTransInCatDialogDirections.actionDeleteAllTransInCatDialogToCategoriesFragment()
    findNavController().navigate(action)

ДиалогФрагмент C и B закрываются оба сразу, ибо action в навигационном файле выглядит так:

<action android:id="@+id/action_deleteAllTransInCatDialog_to_categoriesFragment"
    app:destination="@id/categoriesFragment"
    app:popUpTo="@id/categoriesFragment"
    app:popUpToInclusive="true"/>

Проблема в том что, действия вызываемые result-ом в Фрагменте А (показ Snackbar-a) не происходят. При этом если я посылаю похожий результат в Главный Фрагмент А из другого Диалога, то показ Snackbar происходит. Оба резалта успешно ловятся, что видно в логах. Код обработки result-a идентичный, в коде внизу видно. Все методы отвечающие за показ Snackbara тоже в логах срабатывают. Разные только способы навигации в MainFragment A. Но что конкретно служит причиной бага понять не могу, буду благодарен за подсказки.

UPD Как я понимаю, раз все методы срабатывают, может быть программа думает что snackbar уже показывается, а на деле фрагмент А ресторится на миллисекунды позже. Я пробовал переместить fragmentResultListener из onViewCreated в onResume, но толку ноль.

навигация из Fragment B, после которой Снекбар в основном Фрагменте корректно отображается:

    when (it){
        is EditCategoryViewModel.EditCatEvent.NavigateBackWithResult -> {
            binding.etCatName.clearFocus()
            setFragmentResult("add_edit_request", bundleOf("add_edit_result" to it.result))
            findNavController().popBackStack()
         }

навигация из Диалога C, после которой Snackbar не отображается (а должен):

.setPositiveButton("Yes") { _, _ ->
        setFragmentResult("cat_del_request", bundleOf("cat_del_result" to viewModel.result))
        val action = DeleteAllTransInCatDialogDirections.actionDeleteAllTransInCatDialogToCategoriesFragment()
        findNavController().navigate(action)
        viewModel.onConfirmClick()
    }

in MainFragment:

setFragmentResultListener("add_edit_request") { _, bundle ->
        val result = bundle.getInt("add_edit_result")
        viewModel.onAddEditResult(result)
        Log.d(TAG, "CatDelResult = $result ")
    }

setFragmentResultListener("cat_del_request") { _, bundle ->
        val result = bundle.getInt("cat_del_result")
        viewModel.onCatDelResult(result)
        Log.d(TAG, "CatDelResult = $result ")
    }

Main ViewModel:

fun onAddEditResult(result: Int) {
        when (result) {
            ADD_CATEGORY_RESULT_OK -> showCatSavedConfirmSnackbar("Category saved")
            EDIT_CATEGORY_RESULT_OK -> showCatSavedConfirmSnackbar("Category updated")
            }
    }

    fun onCatDelResult(result: Int) {
        when (result) {
            CAT_DEL_RESULT_COMPLETE_DELETION -> showCatSavedConfirmSnackbar("Category deleted with all its content")
            CAT_DEL_RESULT_CONTENT_RELOCATED -> showCatSavedConfirmSnackbar("All the content of deleted category has been successfully relocated to another category")
        }
    }

    private fun showCatSavedConfirmSnackbar(msg: String) = viewModelScope.launch {
        categoriesEventChannel.send(CategoriesEvent.ShowCatSavedConfirmMessage(msg)) // sends command to show snackbar
    }

Ответы (0 шт):