【发布时间】:2016-01-02 19:57:36
【问题描述】:
查看 rootView = inflater.inflate(R.layout.check_fragment,container,false);
在这种情况下使用布尔值 false 有什么用? 我是Android编程的初学者,有人可以详细解释一下吗? 提前致谢。
【问题讨论】:
查看 rootView = inflater.inflate(R.layout.check_fragment,container,false);
在这种情况下使用布尔值 false 有什么用? 我是Android编程的初学者,有人可以详细解释一下吗? 提前致谢。
【问题讨论】:
https://developer.android.com/reference/android/view/LayoutInflater.html
如果您将其设置为 true,则视图将自动添加到其父级(第二个参数)。大多数时候它应该是错误的,但有时需要它,尤其是当您在膨胀的 xml 中使用 <merge> 作为 root 时。
【讨论】:
true 的意思是“请将膨胀的View 添加到container 作为我的孩子”。 false 的意思是“请不要将膨胀的 View 添加到 container 作为我的孩子,因为其他代码稍后会处理”。
对于片段,您允许FragmentManager 控制在其容器中添加和删除片段的View。
在inflate() 中完全需要container 的原因是某些布局管理器类(尤其是RelativeLayout)需要知道它们的容器才能正确设置它们的布局规则。
【讨论】:
膨胀的层次结构是否应该附加到根参数?如果为 false,则 root 仅用于为 XML 中的根视图创建正确的 LayoutParams 子类。
【讨论】:
来自docs:
attachToRoot - 膨胀的层次结构是否应该附加到 根参数?如果为 false,则 root 仅用于创建正确的 XML 中根视图的 LayoutParams 的子类。
在片段中,您应该将 false 作为附加参数传递,这样视图层次结构将不会附加到 onCreateView 中传递的 ViewGroup 父级。这个附件稍后会发生,Android 会处理它。该容器仅传递给 onCreateView,因此您可以了解您的片段视图层次结构将去往的容器。
实际上将此参数设置为 true 可能会导致异常或至少一些奇怪的行为。
【讨论】: