Android fragment 内部嵌套tabhost组件

来源:互联网 发布:淘宝电商培训有用吗 编辑:程序博客网 时间:2024/05/17 22:09

五月就这样过去了。

月末上点干货。

干货当然是没人分享过的东东O(∩_∩)O~

Android fragment组件的推出是为了替代tabhost组件的。

但有时候由于项目需要,我们需要在fragment内部嵌套tabhost。

fragment是一个可以左滑右滑以及点击切换的组件,而tabhost只能点击切换。

这样的话,从view的touch分发事件角度来看,fragment内部嵌套tabhost是可行的。


目前网络可以搜到的方案是:

onCreateView() 方法里是 TabHost 的主要部分,获取TabHost的方法是先用 LayoutInflater抽象类获取布局对象,然后用布局对象获取TabHost,因为不是继承Activity,所以不能直接用getViewById()。
最后tabHost.setup()。

但这样还是会有问题,tab布局出来了,但是对应的内容不显示。


实现这一效果的关键在于LocalActivityManager管理类。

但要使用该方法,页面必须继承ActivityGroup。

Fragment不属于ActivityGroup,但它可以通过getActivity()获取嵌套它的Activity。

于是,

localActivityManager = new LocalActivityManager(getActivity(), true);localActivityManager.dispatchCreate(savedInstanceState);tabHost.setup(localActivityManager);

关于LocalActivityManager的详细介绍,可以参考blog : http://blog.csdn.net/caowenbin/article/details/5876019


好了,别忘了在其他生命周期执行下相关操作:

@Overridepublic void onResume() {super.onResume();localActivityManager.dispatchResume();}@Overridepublic void onPause() {super.onPause();localActivityManager.dispatchPause(getActivity().isFinishing());}


最终效果图:




说再多也没有源码来的实在:

源码地址:

http://download.csdn.net/detail/singleton1900/7403531

0 0