2013-06-30 65 views
1

假设一个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); 
} 

然后将片段的根视图(如通过onCreateView返回)应该连接到封闭活动。

问题:

  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" 
        /> 
    

    那么什么是的标识片段的根视图,fragment_foolistview_foo

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

  3. 由于片段的视图层次连接到封闭的活动,都应当在该片段中找到一个视图中工作:

    getActivity().findViewById() 
    

    getView().findViewById() 
    

    这是正确的?

+0

请问您能否显示布局xml文件和用于放置片段的代码? –

回答

2

你自己看着办使用Hierarchy Viewer(模拟器上运行)这个问题了(任何许多其他布局的问题/问题)。它会向您显示您的活动的确切视图结构。