我正在审查支持v4软件包的示例项目,偶然发现了一些奇怪的事情。:
在 FragmentNestingTabsSupport.java 中进行设置时, R.id.fragment1 用作 mTabHost 的容器。
它不应该是与FragmentActivity
视图层次结构中的视图对应的id吗?
我只看到它的视图层次结构由一个FragmentTabHost
组成。
BTW:fragment1存在于fragment_hide_show_support.xml
内,这是不同演示的一部分。
答案 0 :(得分:2)
它不应该是对应于内部视图的id FragmentActivity的视图层次结构?
不完全。如果您查看FragmentTabHost
类的源代码,只有当包含内容的容器尚不存在时,FragmentTabHost
才会使用提供的ID 即可。这种情况不会发生在该示例中,因为FragmentTabHost
的构造函数调用私有方法,如果FragmentTabHost
不包含{TabWidget
,则该方法的任务是构建布局(包括上述内容容器)文件{1}}。
因此,在该示例中,FragmentTabHost
不包含触发要构建的布局的TabWidget
。使用此构建布局意味着忽略提供给setup()
方法的ID。他们也可以简单地拨打mTabHost.setup(this, getSupportFragmentManager());
。