gpt4 book ai didi

android - 在嵌套的 FragmentTabHost 中切换选项卡后 fragment 不可见

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:17:12 26 4
gpt4 key购买 nike

我的一个 fragment 的布局中有一个 FragmentTabHost(我们称它为 parentFragment)。现在,我在 parentFragment 的 onCreateView 中以编程方式初始化进入 tabhost 的每个 fragment 。创建 parentFragment 后,一切似乎都正常工作,并且正确显示第一个选项卡的 fragment 。

但是只要我切换一次选项卡, fragment 就会消失(我可以看到 tabhost 的背景颜色,但没有 tabcontent-container 的内容)。当我切换回第一个 fragment 时,第一个 fragment 也不见了。正如我的日志记录所示,这些 fragment 实际上正在创建,但它们是不可见的。

我认为它与(重新)创建 fragment 有关,因为我还尝试将 ViewPager 与 FragmentPagerAdapter 结合使用。在那里,我可以愉快地在前两个 fragment 之间切换(由于 setOffscreenPageLimit() ==1 而预加载),但是(重新)创建的 fragment 也是空白的。

有什么想法吗??

这是我的一些代码:

parentFragment 的 XML 提取:

...
<android.support.v4.app.FragmentTabHost
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_alignParentTop="true" />

<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="0dp"
android:layout_height="0dp" />

<FrameLayout
android:id="@+id/realtabcontent"
android:layout_below="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
</android.support.v4.app.FragmentTabHost>
...

parentFragment 的 XML 提取:

...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.d(TAG, "onCreateView");
ViewGroup layoutContainer = (ViewGroup) inflater.inflate(R.layout.fragment_app_details_test, container, false);

tabHost = (FragmentTabHost) layoutContainer.findViewById(android.R.id.tabhost);
tabHost.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent);
tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("TAB1"),
FragmentSubTab1.class, null);
tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("TAB2"),
FragmentSubTab2.class, null);
tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("TAB3"),
FragmentSubTab3.class, null);

return layoutContainer;
}
...

子标签 fragment 中的简单布局膨胀:

...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ViewGroup layoutContainer = (ViewGroup) inflater.inflate(R.layout.subfragment1, container,
false);

initUi(layoutContainer);
return layoutContainer;
}
...

最佳答案

我以前没有处理过 FragmentTabHost 但我建议您使用操作栏方法 setNavigationMode(ActionBar.NAVIGATION_MODE_TABS) 在您的应用程序中实现选项卡导航(Doc here: http://developer.android.com/guide/topics/ui/actionbar.html#Tabs )这个提议的方法似乎工作量更少,使用的 fragment 持有者也更少。您基本上可以实例化您的选项卡,将它们添加到后台堆栈,并通过 onTabSelected 或 onTabUnselected 方法根据选定的选项卡显示/隐藏它们。

希望对您有所帮助。

关于android - 在嵌套的 FragmentTabHost 中切换选项卡后 fragment 不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13886710/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com