求助,Tabhost里怎么加入手势实现左右滑动

求助,Tabhost里怎么加入手势实现左右滑动,第1张

用tabHost+ViewPager来实现

我这有做过来一个,你去看看吧

http://download.csdn.net/detail/qqmsd8/6469823

另外,现在已经不建议使用tabhost了,已经被废弃了

你看看这个吧,带滑动跟随的

http://download.csdn.net/detail/qqmsd8/8160051

先来看看整个demo的结构:

TabAFm到TabEFm都是Fragment,并且每个Fragment对应一个布局文件。

TabAFm.java:

View Code

如上述代码所示,TabAFm是一个Fragment,对应的布局文件是tab_a.xml,并实现了他的所有的生命周期回调函数并打印,便于调试

tab_a.xml布局中有个EditText

其他的Fragment大同小异,这里就不贴出代码了

现在来看MainActivity:

View Code

MainActivity上述代码所示

MainActivity是包含Fragment的Activity(也就是这里的5个Fragment)

他继承了FragmentActivity(因为我这里用的是android-support-v4.jar)

用一个List<Fragment>去维护5个Fragment,也就是5个tab

main布局中有一个id为tab_content的FrameLayout,用来存放要显示的Fragment。底部有一个RadioGroup,用于tab的切换,如下:

View Code

现在回到MainActivity中,下面这个FragmentTabAdapter类是关键,是我自己编写的用于绑定和处理fragments和RadioGroup之间的逻辑关系

FragmentTabAdapter tabAdapter = new FragmentTabAdapter(this, fragments, R.id.tab_content, rgs)

现在看下FragmentTabAdapter:

View Code

这里解决Fragment切换重新加载布局的办法,用的是把几个Fragment全部Add,然后根据要显示的哪个Fragment设置show或者hide

效果输出:

10-10 11:55:41.168: INFO/System.out(18368): AAAAAAAAAA____onAttach// 第一次进入,显示TabA

10-10 11:55:41.168: INFO/System.out(18368): AAAAAAAAAA____onCreate

10-10 11:55:41.168: INFO/System.out(18368): AAAAAAAAAA____onCreateView

10-10 11:55:41.175: INFO/System.out(18368): AAAAAAAAAA____onActivityCreated

10-10 11:55:41.179: INFO/System.out(18368): AAAAAAAAAA____onStart

10-10 11:55:41.179: INFO/System.out(18368): AAAAAAAAAA____onResume

10-10 11:55:44.980: INFO/System.out(18368): AAAAAAAAAA____onPause// 从TabA切换到TabB(TabA调用onPause)

10-10 11:55:44.980: INFO/System.out(18368): Extra---- 1 checked!!!

10-10 11:55:44.996: INFO/System.out(18368): BBBBBBBBBBB____onAttach

10-10 11:55:44.996: INFO/System.out(18368): BBBBBBBBBBB____onCreate

10-10 11:55:44.996: INFO/System.out(18368): BBBBBBBBBBB____onCreateView

10-10 11:55:45.004: INFO/System.out(18368): BBBBBBBBBBB____onActivityCreated

10-10 11:55:45.004: INFO/System.out(18368): BBBBBBBBBBB____onStart

10-10 11:55:45.004: INFO/System.out(18368): BBBBBBBBBBB____onResume

10-10 11:55:52.062: INFO/System.out(18368): BBBBBBBBBBB____onPause// 从TabB切换到TabC(TabB调用onPause)

10-10 11:55:52.062: INFO/System.out(18368): Extra---- 2 checked!!!

10-10 11:55:52.082: INFO/System.out(18368): CCCCCCCCCC____onAttach

10-10 11:55:52.082: INFO/System.out(18368): CCCCCCCCCC____onCreate

10-10 11:55:52.086: INFO/System.out(18368): CCCCCCCCCC____onCreateView

10-10 11:55:52.090: INFO/System.out(18368): CCCCCCCCCC____onActivityCreated

10-10 11:55:52.090: INFO/System.out(18368): CCCCCCCCCC____onStart

10-10 11:55:52.090: INFO/System.out(18368): CCCCCCCCCC____onResume

10-10 11:56:06.535: INFO/System.out(18368): CCCCCCCCCC____onPause// 从TabC切换到TabB(TabC调用onPause)

10-10 11:56:06.535: INFO/System.out(18368): BBBBBBBBBBB____onResume// 从TabC切换到TabB(TabB调用onResume)

10-10 11:56:06.535: INFO/System.out(18368): Extra---- 1 checked!!!

好了,到此为止,我们已经用Fragment实现了类似TabHost的功能了,下面来看下各个Fragment之间的通信

现在的情况是TabAFm中有个EditText,TabBFm中有个Button,MainActivity中有个变量“hello”

要做的是,切换到TabA,输入“I'm TabA”,切换到B,点击Button后,Toast显示“hello I'm TabA”

MainActivity中没什么好说的,就一个hello变量:

public String hello = "hello "

TabAFm在布局文件tab_a.xml中加个EditText,设置个id就可以了

TabBFm中:

View Code

// 获得绑定的FragmentActivity

MainActivity activity = ((MainActivity)getActivity())

通过getActivity()即可得到Fragment所在的FragmentActivity

一直以来大概做带有导航类的应用的时候,都是使用TabActivity,但是,最新的SDK把TabActivity标成了deprecated,那只能重新寻找替代方案了,目前网上说的方案都是很混乱的

Fragment翻译过来叫碎片,但是我个人觉得可以理解为具有生命周期的View

由于Fragment是3.0以后的东西,对于适应低版本,那我们只能使用谷歌官方提供的android-support-v4.jar这个包了,最快捷的办法就是右击工程名,选择Android

Tools——add support

library...,即可添加这个包了

由于3.0以下的Activity里面没有对Fragment的支持,所以选择继承android-support-v4.jar包中的FragmentActivity,其功能跟3.0及以后的版本的Activity的功能一样

&DEMO下载:

底部导航加顶部导航,使用FragmentTabHost,Fragmetn,FragmentActivity组成,代码已经打包上传了

1、首先,底部导航的实现,FragmentTabHost和以前的TabHost的区别就是增加了对Fragment的支持,这里的实现和其他使用TabActivity是一样的,只是选项卡的切换已经从activity变成fragment了

2、这里主要讲一下顶部导航的实现,为了让大家对fragment更好的理解,这里我没有采用FragmentTabHost,而是放了三个Button

package

com.yyb.

import android.os.B


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11387671.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存