kotlin 在Android中导航时,片段与片段管理器不关联

f4t66c6m  于 2023-02-16  发布在  Kotlin
关注(0)|答案(1)|浏览(888)

当我进入MessageDetails片段时,返回箭头并导航到其他片段,返回并尝试再次点击MessageDetails按钮,我出现崩溃和错误:“片段与片段管理器没有关联”。
有趣的handleEvent(事件:消息列表事件){

when (event) {
        is NavToMessageDetails -> {
            val action =
              MessageListFragmentDirections.actionMessageListFragmentToMessageDetailsFragment(
                    event.id,
                    DateHelper.parseFullDate(event.date),
                    event.message,
                    event.title
                )
            findNavController().navigate(action)
        }
    }

这是负责导航到细节片段的片段函数。在应用中,我们创建了带有app:menu值的BottomNavigation,在这些片段之间导航时会发生此错误。
事件(MessageListEvent)被记录在函数声明下,一切正常。另外,当我尝试用lifecycleScope.launchWhenResumed {} Package findNavController()时,它不会导航或执行任何操作。

z0qdvdin

z0qdvdin1#

当您尝试在当前未与FragmentManager关联的片段上执行片段事务时,会出现错误“Fragment not associated with a fragment manager”。
在您的示例中,当您导航离开MessageDetailsFragment,然后尝试使用后退箭头导航回该MessageDetailsFragment时,该MessageDetailsFragment似乎正在被销毁。要解决此问题,您可以尝试在导航到该MessageDetailsFragment时将其添加到后台堆栈,方法是在调用navigate()方法之后调用addToBackStack()方法,如下所示:
findNavController().导航(操作).添加到后栈(空)

相关问题