使用false attachtoroot和true attachtoroot(boolean)来扩充布局有什么区别?
这是一段代码:
ViewGroup rootView = (ViewGroup) inflater.inflate(
R.layout.fragment_screen_3, container, false);
和
ViewGroup rootView = (ViewGroup) inflater.inflate(
R.layout.fragment_screen_3, container, true);
答案 0 :(得分:5)
root
和attachToRoot
参数协同工作。
如果您告诉inflate()
将膨胀的视图附加到根视图,那么您膨胀的布局将作为子项添加到根目录。
以下是inflate()
方法的简化:
public View inflate (int resource, ViewGroup root, boolean attachToRoot) {
View inflatedView = inflate(resource); // Inflate the desired view
if (attachToRoot) {
root.addView(inflatedView);
}
}
如果要膨胀最终将附加到父视图的视图,这很有用,例如,如果要使用相同的布局对多个视图进行充气以动态填充ListView。
答案 1 :(得分:2)
当attachToRoot
=假时:
- 返回的rootView
将是来自ViewGroup
的{{1}},[{1}}仍然无法添加到R.layout.fragment_screen_3
。(可以添加到另一个中)查看组父母)
- 如果rootView
中的顶部标记为container
,则会引发异常。
当R.layout.fragment_screen_3
=真时:
- 返回<merge>
将是attachToRoot
- rootView
的内容将作为container
的一部分添加(例如,当您使用R.layout.fragment_screen_3
= false时,请致电container
- 可以与attachToRoot
container.addView(rootView);
标记一起使用
答案 2 :(得分:0)
attachToRoot = true
添加到childView时,请使用
父现在。attachToRoot = false
添加到父级时,请使用attachToRoot = false
在稍后点。您还应该使用
public View onCreateView(LayoutInflater inflater,ViewGroup parent,Bundle bundle) { super.onCreateView(inflater,parent,bundle); View view = inflater.inflate(R.layout.image_fragment,parent,false); ..... return view; }
负责添加childView。
例如。在添加片段时
getSupportFragmentManager()
.beginTransaction()
.add(parent, childFragment)
.commit();
如果将第三个参数传递为true,则由于此人,您将获得IllegalStateException。
add(parent, childFragment)
由于您已经错误地将子片段添加到了onCreateView()中。调用03 10,15,22 * * * python3 /root/Desktop/security/test.py
将引发IllegalStateException,因为已经添加了子视图。
在这里您不负责添加childView,FragmentManager负责。因此,在这种情况下,请始终传递false。