带有保留片段的Android导航组件并输入动画

时间:2019-03-04 15:57:53

标签: android android-architecture-navigation

我正在尝试将导航组件与保留的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组件等。

1 个答案:

答案 0 :(得分:0)

在onDestroyView方法中,删除所有视图或仅删除动画视图。

override fun onDestroyView() {
if(view != null){
val parent = view.parent
parent.removeAllViews
}
super.onDestroyView()
}