【问题标题】:Inflater in Android FragmentsAndroid Fragments 中的 Inflater
【发布时间】:2016-01-02 19:57:36
【问题描述】:

查看 rootView = inflater.inflate(R.layout.check_fragment,container,false);

在这种情况下使用布尔值 false 有什么用? 我是Android编程的初学者,有人可以详细解释一下吗? 提前致谢。

【问题讨论】:

    标签: android layout-inflater


    【解决方案1】:

    https://developer.android.com/reference/android/view/LayoutInflater.html

    如果您将其设置为 true,则视图将自动添加到其父级(第二个参数)。大多数时候它应该是错误的,但有时需要它,尤其是当您在膨胀的 xml 中使用 <merge> 作为 root 时。

    【讨论】:

    【解决方案2】:

    true 的意思是“请将膨胀的View 添加到container 作为我的孩子”。 false 的意思是“请不要将膨胀的 View 添加到 container 作为我的孩子,因为其他代码稍后会处理”。

    对于片段,您允许FragmentManager 控制在其容器中添加和删除片段的View

    inflate() 中完全需要container 的原因是某些布局管理器类(尤其是RelativeLayout)需要知道它们的容器才能正确设置它们的布局规则。

    【讨论】:

    • 谢谢。我在一定程度上理解了,我想我会更好地理解经验:)。
    【解决方案3】:

    膨胀的层次结构是否应该附加到根参数?如果为 false,则 root 仅用于为 XML 中的根视图创建正确的 LayoutParams 子类。

    【讨论】:

      【解决方案4】:

      来自docs

      attachToRoot - 膨胀的层次结构是否应该附加到 根参数?如果为 false,则 root 仅用于创建正确的 XML 中根视图的 LayoutParams 的子类。

      在片段中,您应该将 false 作为附加参数传递,这样视图层次结构将不会附加到 onCreateView 中传递的 ViewGroup 父级。这个附件稍后会发生,Android 会处理它。该容器仅传递给 onCreateView,因此您可以了解您的片段视图层次结构将去往的容器。

      实际上将此参数设置为 true 可能会导致异常或至少一些奇怪的行为。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-23
        相关资源
        最近更新 更多