片段 - 指定的子级已具有父级。在片段导航时,必须先在孩子的父级上调用 removeView()



我收到了这个错误,并尽一切可能消除它(删除动画解决了我的问题(。因此,当我从一个片段移动到另一个片段时,出现了这个错误,但在过渡时,我添加了进入/退出动画。当我在片段A上并移动到片段B时,在动画和应用程序崩溃之间按下即时后退按钮。

val navOptionBuilder = NavOptions.Builder().apply {
setEnterAnim(R.anim.slide_in_right)
setExitAnim(R.anim.slide_out_left)
setPopEnterAnim(R.anim.slide_in_left)
setPopExitAnim(R.anim.slide_out_right)
} // *without animation it works fine* 
findNavController().graph.addDestination(navDestination)
findNavController().navigate(navDestination.id, bundle, navOptionBuilder.build())

崩溃消息

Fragments-指定的子级已经有一个父级。您必须首先对孩子的父级调用removeView((

buildToolsVersion‘28.0.3’

由于动画的原因,我遇到了与您相同的问题,并且我的基础Fragment中onDestroyView方法中的这段代码修复了崩溃的

override fun onDestroyView() {
if (rootView.parent != null){
(rootView.parent as ViewGroup).endViewTransition(rootView)
}
super.onDestroyView()
}

最新更新