片段的视图层次结构

时间:2013-06-30 05:12:42

标签: android

假设Activity只包含一个FragmentFragment的视图由以下内容创建:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState);
    return inflater.inflate(R.layout.fragment, container, false);
}

然后Fragment的根视图(由onCreateView返回)应该附加到封闭的Activity。

问题:

  1. 活动和片段之间的视图层次结构中有多少个级别?我的意思是:

    <Activity View> -> <Fragment View>
    

    <Activity View> -> <Some ViewGroup> -> <Fragment View>
    

    在我对onCreateView的测试中,ViewGroup containernull。这是为什么?

  2. 如果我在activity_main.xml中定义:

    <fragment
        android:id="@+id/fragment_foo"
        />
    

    并在fragment_foo.xml中(假设ListView是此片段中的根视图元素):

    <ListView
        android:id="@+id/listview_foo"
        />
    

    那么什么是片段根视图的ID fragment_foolistview_foo

    我的测试结果是前者。这个结果有望吗?这是否意味着我们永远不应该设置片段布局的根元素的id(因为它不会被使用)?

  3. 由于片段的视图层次结构与封闭活动的视图层次结构相连,因此两者都应该在片段中查找视图:

    getActivity().findViewById()
    

    getView().findViewById()
    

    这是对的吗?

1 个答案:

答案 0 :(得分:2)

您可以使用Hierarchy Viewer(在模拟器上运行它)来解决此问题(任何其他布局问题/问题)。它将显示您的活动的确切视图结构。