FragmentTabHost – 在第一次查看之前,标签不可寻址

我正在使用带有多个标签的FragmentTabHost(如此处所示构建)。 但是,我无法使用getFragmentByTag(在这种情况下返回null)随机地查找我的选项卡,除非通过至少单击选项卡一次激活已解决的选项卡。

FragmentTabHost似乎延迟了标签的创建,直到我们确实需要它们(也就是用户点击它并希望查看它)。
有没有办法强制主机立即创建它们,以便我可以通过getFragmentByTag安全地访问它们?
或者是否可以“自己创建”标签并将它们添加到TabHost中?

Related of "FragmentTabHost – 在第一次查看之前,标签不可寻址"

有没有办法强制主机立即创建它们,以便我可以通过getFragmentByTag安全地访问它们?

不,因为事务是在onAttachedToWindow()执行的。 让我们来看看源代码 :

 @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); String currentTab = getCurrentTabTag(); // Go through all tabs and make sure their fragments match. // the correct state. FragmentTransaction ft = null; for (int i=0; i 

正如您所见, mFragmentManager.executePendingTransactions();onAttachedToWindow执行。

或者是否可以“自己创建”标签并将它们添加到TabHost中?

是的,您可以使用tabhost ,您可以使用以下方法创建选项卡内容。

public TabHost.TabSpec setContent(int viewId)

public TabHost.TabSpec setContent(Intent intent)

public TabHost.TabSpec setContent(TabHost.TabContentFactory contentFactory)