在视图层次结构之外的Id用作FragmentTabHost.setup()的容器?

时间:2013-02-14 06:52:51

标签: android android-view fragment-tab-host

我正在审查支持v4软件包的示例项目,偶然发现了一些奇怪的事情。:

FragmentNestingTabsSupport.java 中进行设置时,

R.id.fragment1 用作 mTab​​Host 的容器。 它不应该是与FragmentActivity视图层次结构中的视图对应的id吗?

我只看到它的视图层次结构由一个FragmentTabHost组成。

BTW:fragment1存在于fragment_hide_show_support.xml内,这是不同演示的一部分。

1 个答案:

答案 0 :(得分:2)

  

它不应该是对应于内部视图的id   FragmentActivity的视图层次结构?

不完全。如果您查看FragmentTabHost类的源代码,只有当包含内容的容器尚不存在时,FragmentTabHost才会使用提供的ID 即可。这种情况不会发生在该示例中,因为FragmentTabHost的构造函数调用私有方法,如果FragmentTabHost不包含{TabWidget,则该方法的任务是构建布局(包括上述内容容器)文件{1}}。

因此,在该示例中,FragmentTabHost不包含触发要构建的布局的TabWidget。使用此构建布局意味着忽略提供给setup()方法的ID。他们也可以简单地拨打mTabHost.setup(this, getSupportFragmentManager());