假设Activity
只包含一个Fragment
,Fragment
的视图由以下内容创建:
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。
问题:
活动和片段之间的视图层次结构中有多少个级别?我的意思是:
<Activity View> -> <Fragment View>
或
<Activity View> -> <Some ViewGroup> -> <Fragment View>
在我对onCreateView
的测试中,ViewGroup container
为null
。这是为什么?
如果我在activity_main.xml
中定义:
<fragment
android:id="@+id/fragment_foo"
/>
并在fragment_foo.xml
中(假设ListView
是此片段中的根视图元素):
<ListView
android:id="@+id/listview_foo"
/>
那么什么是片段根视图的ID ,fragment_foo
或listview_foo
?
我的测试结果是前者。这个结果有望吗?这是否意味着我们永远不应该设置片段布局的根元素的id(因为它不会被使用)?
由于片段的视图层次结构与封闭活动的视图层次结构相连,因此两者都应该在片段中查找视图:
getActivity().findViewById()
和
getView().findViewById()
这是对的吗?