我对fragment
有疑问,我无法从数据绑定中删除rootView,我已经解决了这个问题很长时间了。但是找不到解决方案。
例外:
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
首先显示我的代码:
public class TestRootViewFragment extends BaseFragment {
FragmentTestRootBinding binding;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
if (binding == null) {
binding = FragmentTestRootBinding .inflate(inflater, container, false);
binding.texttitle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
routeTo(new TestViewFragment(),null);
}
});
}
ViewGroup parent = (ViewGroup) binding.getRoot().getParent();
if (parent != null) {
parent.removeView(binding.getRoot());
parent.removeAllViews();
}
return binding.getRoot();
}
protected void routeTo(Fragment fragment, String tag) {
if (getActivity() instanceof BaseActivity) {
getActivity().getSupportFragmentManager()
.beginTransaction()
//.setCustomAnimations(R.anim.slide_right_in,R.anim.slide_left_out)
.replace(((BaseActivity) getActivity()).getFragId(), fragment)
.addToBackStack(tag)
.commit();
}
}
}
这是我的片段代码,有一个Databinding作为成员变量,当这个片段弹回时,我不需要膨胀数据绑定,使用前一个。这是我的目的。但它不起作用。你可以看到我已经解雇setCustomAnimations()
,它现在可以工作,但我需要Aniamtions。
我发现setCustomAnimations()
不是binding.getRoot().getParent()
,setCustomAnimations()
总是为空。不需要删除Views()。
但我需要动画。使用binding.getRoot().getParent()
时,parent.removeAllViews()
不为空。然后我想删除父母。
我使用parent.removeView(binding.getRoot());
& bind.getRoot().getParent()
。然后我发现parent.childcount是ZERO !!!,然后{{1}}仍在那里,没有删除。
我应该解决这个问题(不要介意BaseFragment和BaseActivity)