我正在尝试将导航组件与保留的Fragment和Enter动画一起使用。该片段将与预期的动画一起出现。旋转设备时,出现以下崩溃:
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
我可以通过删除输入动画(从导航图中)或不保留片段来解决此问题。
有人想知道如何解决这个问题吗?
这是我的onCreate:
private var binding: FragmentDemoBinding? = null
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? {
if (binding == null) {
binding = FragmentDemoBinding.inflate(inflater, container, false)
}
retainInstance = true
return binding?.root
}
编辑 :实际上,在阅读更多内容时,我不确定尝试在导航组件中使用保留的片段是否有意义。如果我需要保留有关配置更改的数据,我猜一个无头的片段或使用onSaveInstance或ViewModel组件等。
答案 0 :(得分:0)
在onDestroyView方法中,删除所有视图或仅删除动画视图。
override fun onDestroyView() {
if(view != null){
val parent = view.parent
parent.removeAllViews
}
super.onDestroyView()
}