五月就这样过去了。
月末上点干货。
干货当然是没人分享过的东东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
好了,别忘了在其他生命周期执行下相关操作:
@Override
public void onResume() {
super.onResume();
localActivityManager.dispatchResume();
}
@Override
public void onPause() {
super.onPause();
localActivityManager.dispatchPause(getActivity().isFinishing());
}