假设 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()这个对吗?