用FragmentTabHost + Fragment 可以实现微博底栏菜单,看图:
不过,初次实现时发现有个缺陷,每次FragmentTabHost切换fragment时会调用onCreateView()重绘UI。
解决方法,在fragment onCreateView 里缓存View:
private View rootView;// 缓存Fragment view
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
Log.i(TAG, "onCreateView");
if (rootView == null)
{
rootView = inflater.inflate(R.layout.fragment_1, null);
}
// 缓存的rootView需要判断是否已经被加过parent,如果有parent需要从parent删除,要不然会发生这个rootview已经有parent的错误。
ViewGroup parent = (ViewGroup) rootView.getParent();
if (parent != null)
{
parent.removeView(rootView);
}
return rootView;
}
- 大小: 84 KB
分享到:
相关推荐
FragmentTabHost允许开发者在每个选项卡中加载不同的Fragment,这样可以更好地支持多任务处理和复杂的用户界面设计。 Fragment是Android 3.0(API级别11)引入的一种UI组件,它是Activity的一部分,可以在Activity...
7. 监听BottomNavigationView的选中事件,当选择不同菜单项时,使用FragmentManager的beginTransaction()方法切换Fragment。 在实际项目中,可能还需要考虑Fragment的生命周期管理、数据传递以及状态保存等问题。...
然而,这种行为在某些情况下并不是最佳选择,特别是当Fragment的初始化过程复杂或者包含大量数据加载时,重复加载会导致不必要的资源消耗。 相反,通过使用`hide()`和`show()`方法,我们可以保持Fragment实例的存在...
而FragmentTabHost则将这些小窗口替换为Fragment,使得在各个标签页之间切换时,能够更加灵活地管理Fragment的生命周期。 实现步骤如下: 1. **创建Fragment的子类**:首先,为每个底部菜单项创建一个Fragment的...
在Android开发中,`FragmentTabHost`是Google提供的一个组件,用于在Activity中实现标签页切换功能,并且每个标签页可以加载不同的`Fragment`。`FragmentTabHost`结合了`Fragment`的优势,使得UI设计更加灵活,同时...
可以通过在AndroidManifest.xml中为Activity设置`android:configChanges="orientation|screenSize"`来手动处理配置更改,避免重建Fragment。 8. **处理回退栈**:FragmentTransaction的`addToBackStack()`方法可以...
在Fragment中使用FragmentTabHost,可以避免在Activity中直接处理多个Fragment的复杂性,使代码更易于维护。 实现FragmentTabHost的步骤如下: 1. **创建Fragment**:首先,你需要创建代表每个选项卡内容的...
它结合了TabHost和Fragment的功能,使得在Android应用中实现多标签页切换并加载不同的Fragment内容变得更为简单。下面我们将深入探讨FragmentTabHost的相关知识点。 **1. TabHost与FragmentTabHost的区别** 在...
为了响应用户点击Tab时切换Fragment,我们还需要在`onTabChanged`方法中处理: ```java tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() { @Override public void onTabChanged(String tabId...
在Android应用开发中,"fragment+fragmenttabHost仿新浪微博底部菜单栏"是一个常见的设计模式,用于构建具有多个可切换视图的应用界面,类似于微博应用中的底部导航栏。这个设计允许用户在不同功能区域之间平滑地...
在Android应用开发中,UI设计往往需要展示多个可切换的视图,这时我们可以利用`TabHost`组件来创建带有标签页的应用界面。`TabHost`是Android提供的一个用于实现标签栏与内容区域交互的容器,它允许我们创建具有多个...
2. 为一级FragmentTabHost设置tab监听器,以便在切换tab时加载对应的Fragment。 3. 在一级Fragment中,为二级FragmentTabHost设置tab和对应的Fragment。这可以通过在onCreateView或onActivityCreated方法中完成。 4....
尽管通常不需要手动处理Tab点击事件,因为FragmentTabHost会自动处理切换Fragment,但如果你想在切换时执行额外的操作,可以重写`onTabChanged()`方法。 5. **配置Fragment**: 在Fragment的`onCreateView()`或`...
为了在Tab切换时动态加载和切换Fragment,我们需要监听TabHost的`OnTabChangeListener`,并在切换时使用FragmentManager的`beginTransaction().replace()`方法替换当前显示的Fragment: ```java tabHost....
与传统的TabHost相比,FragmentTabHost可以直接管理Fragment的生命周期,使得在各个标签间切换时,Fragment的状态可以得到正确地保存和恢复。只需在TabHost上添加TabSpec,并指定对应的Fragment,就可以实现标签页的...
FragmentTabHost是TabHost的子类,主要目的是在每个标签页中加载Fragment。首先,你需要在布局文件中添加一个FragmentTabHost,并设置其id为android.R.id.tabhost。然后,通过调用`setup()`方法初始化...
FragmentTabHost是Android开发中的一个组件,主要用于在同一个Activity中管理多个Fragment,并通过Tab进行切换。这个组件在处理复杂的UI布局和用户交互时非常有用,因为它允许你在不同的Tab之间分割应用的功能,提供...
而TabLayout则提供了更现代的选项卡样式,与ViewPager结合使用,可以在用户切换Tab时加载相应的Fragment。 项目中可能包含以下几个关键部分: 1. **MainActivity**:这是整个应用的入口点,通常负责设置和管理...
在Android应用开发中,底部导航(Bottom Navigation)是一种常见的用户界面设计模式,它...然而,`FragmentTabHost`仍然是一个很好的学习和理解Fragment与Tab交互的工具,对于理解Android UI组件的工作原理非常有帮助。
在与Fragment结合使用时,ViewPager可以通过PagerAdapter或FragmentPagerAdapter(或者其子类FragmentStatePagerAdapter)来加载和管理Fragment,使得用户可以在不销毁其他页面的情况下平滑地在它们之间切换,从而...