当我进入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()时,它不会导航或执行任何操作。
1条答案
按热度按时间z0qdvdin1#
当您尝试在当前未与FragmentManager关联的片段上执行片段事务时,会出现错误“Fragment not associated with a fragment manager”。
在您的示例中,当您导航离开MessageDetailsFragment,然后尝试使用后退箭头导航回该MessageDetailsFragment时,该MessageDetailsFragment似乎正在被销毁。要解决此问题,您可以尝试在导航到该MessageDetailsFragment时将其添加到后台堆栈,方法是在调用navigate()方法之后调用addToBackStack()方法,如下所示:
findNavController().导航(操作).添加到后栈(空)