问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

android中fragmenttabhost怎么设置左右滑动

发布网友 发布时间:2022-04-25 21:47

我来回答

1个回答

热心网友 时间:2022-05-03 06:59

先来看看整个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
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
sometimesome timesometimessome times的区别 瓜地的午餐怎么造句 夏季宝宝不吃饭应该怎么办 狼人杀里面的白狼王模式怎么玩? 狼人杀白狼王和骑士:操作至上的高效玩法指南 狼人杀手游白狼王怎么玩 详细玩法攻略 狼人杀 狼人杀的白狼王怎么玩? 国产轮毂品牌有哪些 国产轮毂品牌哪个品牌好 国内轮毂有哪些品牌 岗位和职务怎么填 三星新款智能手表亮点有哪些? 三星最新款的智能手表有哪些亮点? android tablayout怎么把tab传到fragment里面去 汽车上,什么是空气内循环? Android 微信 底部tab 切换时是新的activity 还是 fragment android 在fragment里的怎样实现滑动fragment 内循环的A和M是什么意思? 安卓开发中tab的某个子项下fragment重叠,怎么解决 android fragment无法显示 android中tabhost+fragment为什么重复加载两次 android tab 判断在哪个fragment 腰围26是多少厘米 25和26号中腰牛仔裤的腰围分别是多少cm(厘米)? 穿25/26的裤子腰围是多少啊 25的裤子腰围是多少厘米、多少尺? 25码的腰围是几尺?多少厘米? 25的腰围是多少尺码? 25码的裤子腰围臀围大腿围小腿围是多少厘米 裤子25 26 27 28 29 30 32码都是多少厘米 裤子25码的是多大? 什么是空气内循环? android fragmenttabhost怎么用 华米科技Amazfit 新品系列设计有什么特别?增加了什么功能? Android中用Fragment做了一个tab切换的界面,但是总是报 Unable to instantiate activity ComponentInfo 长续航智能手表哪款值得买? Android高德地图在FragmentTabHost的Fragment切换出地图再切换回来时,地图界面会出现一个大白块 空气内循环标志是什么? apple watch series 7会烧屏吗 android fragmenttabhost 是可以滑动的吗 奥迪A4空调面板里有个圈型箭头里标个“A”是什么意思?是内循环按键吗? 让android页面切换后保持后台运行,应该用FragmentTab还是FragmentPaperAd 标志3008此标识、有a及没有a哪个代表空调内循环?哪个代表外循环?谢谢! 现在有超越applewatch的智能手表么? android Fragment中怎么更新数据 奥迪A4空调面板里有个圈型箭头里标个A 是什么意思 是内循环按键吗 android fragmenttabhost现在常用吗 汽车内外循环开关有什么作用?A\C开关什么用? 如何在现有fragment上添加另一个fragment 04款伊兰特内外循环怎么区分,空调开关下面有2个标识:一个是圆圈里面有... android小白一枚,想知道android怎么在fragment中怎么实现上传附件功能,跪求大神指导