所以我有一个案例,如果我在转换动画运行时调用popBackStack
,应用程序崩溃了。是否有任何干净的方法来阻止任何正在进行的过渡,或者至少检查是否有人在运行?
我得到的例外:
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.view.ViewGroup.addViewInner(ViewGroup.java:3577)
可能会或可能与此异常发生原因相关的几个事实:
setRetainInstance(true)
onCreateView
中的父级删除子视图,但由于某种原因(childView.getParent()
在调用parentView.remove(childView)
后仍未为空)失败我考虑过的解决方案:
retainInstance=false
popBackStack
no.1并不是一个真正的选择,因为它会破坏用户的用户体验并导致大量的重构。
no.2是我现在考虑最多的那个,但我不喜欢如何移动与动画初始化相关的代码并为此解决方案实现一堆代码
no.3如果我知道如何,我会选择解决方案吗?任何人吗?
答案 0 :(得分:0)
您需要将其缓存视图与其父视图分离:
@Override
public void onDestroyView() {
if (view != null) {
ViewGroup parent = (ViewGroup) view.getParent();
if (parent != null)
parent.removeView(view);
}
super.onDestroyView();
}