本文主要是介绍Android fragment 内部嵌套tabhost组件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
五月就这样过去了。
月末上点干货。
干货当然是没人分享过的东东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());}
这篇关于Android fragment 内部嵌套tabhost组件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!