Fragment根布局能不能使用merge标签

来源:互联网 发布:恋爱技巧大全软件 编辑:程序博客网 时间:2024/04/29 10:05

  合理使用merge标签可以减少布局层次,但使用merge标签必须指定一个父容器,并且必须要attach到父容器上去。也就是说在fragment的 onCreateView() 里面应该这样写:

inflater.inflate(R.layout.layout_fragment_root, container, true);

  但是在这样写会报错:java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child’s parent first.
  inflate的view是需要作为onCreateView() 的返回值加到框架上去的,但这个view已经被添加到container了,所以报错。
  所以在Fragment中是不能直接使用merge标签的。如果要使用merge标签,需要给它创建一个父容器。
  

 LinearLayout wrapper = new LinearLayout(getActivity()); inflater.inflate(R.layout.layout_fragment_root, wrapper, true); return wrapper;

  这样,和没有使用 merge标签是一样的。