假设 anActivity
仅包含一个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 和 Fragment 之间的视图层次结构中有多少层?我是说:
<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()
这个对吗?