片段无法删除Databinding.getRoot()与事务具有setCustomAnimations()?

时间:2017-12-07 08:52:03

标签: android android-fragments data-binding

我对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)

0 个答案:

没有答案