Til*_*ill 5 android android-tabhost android-fragments android-nested-fragment
我在我的一个片段的布局中有一个FragmentTabHost(让我们称之为parentFragment).现在,我在parentFragment的onCreateView上以编程方式初始化tabhost中的每个片段.当创建parentFragment时,一切似乎都正常工作,它正确显示第一个选项卡的片段.
但是一旦我切换标签一次,片段就会消失(我可以看到tabhost的背景颜色,但没有tabcontent-container的内容).当我切换回它时,第一个片段也消失了.这些片段实际上是在我的日志记录显示时创建的,但它们不可见.
我认为它与(重新)创建片段有关,因为我也尝试使用带有FragmentPagerAdapter的ViewPager.在那里,我可以愉快地在前两个片段之间切换(由于setOffscreenPageLimit()== 1而预先加载),但是除此之外创建的片段(重新)也是空白的.
任何想法?
这是我的一些代码:
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>
...
Run Code Online (Sandbox Code Playgroud)
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;
}
...
Run Code Online (Sandbox Code Playgroud)
子选项卡片段中的简单布局膨胀:
...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ViewGroup layoutContainer = (ViewGroup) inflater.inflate(R.layout.subfragment1, container,
false);
initUi(layoutContainer);
return layoutContainer;
}
...
Run Code Online (Sandbox Code Playgroud)
我以前没有处理过 FragmentTabHost,但我建议您使用操作栏方法 setNavigationMode(ActionBar.NAVIGATION_MODE_TABS) 在您的应用程序中实现选项卡导航(文档位于: http ://developer.android.com/guide/topics /ui/actionbar.html#Tabs)这种建议的方法似乎工作量更少并且使用更少的片段持有者。您基本上可以实例化选项卡,将它们添加到后台堆栈,并通过 onTabSelected 或 onTabUnselected 方法根据所选选项卡显示/隐藏它们。
希望能帮助到你。
| 归档时间: |
|
| 查看次数: |
2609 次 |
| 最近记录: |