android开发中fragment与activity之间相互跳转的问题

来源:互联网 发布:c语言培训学校 编辑:程序博客网 时间:2024/05/29 18:34

小菜鸟最近在参加第五届中国大学生外包服务大赛的大神手下打杂,偶然之间遇到了fragment与activity之间跳转的问题,费劲力气(毕竟能力有限)终于给解决了,也分享出来我的方法,希望得到更多大神的指点。

一,从activity向fragment跳转。

  在学习android开发时,做界面跳转的范例是两个activity之间的跳转,代码是这样的:


Intent intent = new Intent(MainActivity.this, FragmentBottomTabPager.class);startActivity(intent);


但是如果用到fragment上则会出问题。举例如下:




点击第一张图最上的按钮向个人信息页面跳转,这个代码可以在其所属的fragment中完成:

Intent intent = new Intent(getActivity(),myInfo.class);startActivity(intent);


此处与实例代码不同之处在于是调用了getActivity()方法,因为fragment不是一个activity,多个fragment是放在同一个activity中通过tabhost来切换的。所以此处参数选择获取所在的activity,将fragment与activity的切换变成两个activity之间的切换。

二,由activity向fragment切换。还是上两张图,这里的情形是要从第二张图回到第一张图。

首先在跳转起点的activity中Button的监听函数中写这么一段代码:

Intent intent = new Intent(myInfo.this, FragmentBottomTabPager.class);intent.putExtra("fragid", 3);startActivity(intent);

然后,在组织着多个fragment的activity中onCreate函数中这样写:


if (savedInstanceState != null) {mTabHost.setCurrentTabByTag(savedInstanceState.getString("tab"));}Intent intent = this.getIntent();int id = intent.getIntExtra("fragid",-1);if (id==3){mTabHost.setCurrentTab(2);

事先定义mTabHost:

private FragmentTabHost mTabHost;


两端代码的意思是,在myInfo这个activity向fragmentbottomTabPager这个activity跳转时,intent里面加入了一个名为“fragid”,值为3的参数;

在fragmentbottomTabPager这个activity中声明一个fragmentTabHost的实例mTabHost,然后实例化获取到的intent,取出里面的参数,如果没有则返回-1,如果参数相符,则调用setCurrentTab方法,设置当前的fragment。


1 1
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 生完孩子回奶了怎么办 产妇3天没奶水怎么办 产后7天了奶水少怎么办 刚生完小孩没有奶水怎么办 突然就没奶水了怎么办 生完小孩没有奶水怎么办 生完宝宝没有奶怎么办 剖腹产奶涨的疼怎么办 生产一天了没奶怎么办 第一天断奶 奶水一直流出怎么办 新生儿刚出生没奶水怎么办 安卓手机死机了怎么办 婴幼儿几天不拉大便怎么办 樱桃吃多了胃不舒服怎么办 空腹吃水果胃不舒服怎么办 吃水果后胃不舒服怎么办 吃水果伤胃了怎么办 大人吃退烧药不出汗怎么办 稍微吃点凉水果胃就疼怎么办 1岁宝宝感冒发烧怎么办 3岁小儿反复发烧怎么办 热感冒喉咙疼要怎么办 孩子感冒咳嗽嗓子疼怎么办 孕妇感冒了嗓子疼咳嗽怎么办 4岁宝宝反复高烧怎么办 小孩吃完药不退烧怎么办 六个月婴儿发烧怎么办退烧快点 咳嗽20天老不好怎么办 吃过退烧药出汗怎么办 5岁儿童发烧39度怎么办 小孩烧到39度怎么办 儿童7岁发烧39度怎么办 发烧没药怎么办怎样退烧快 小孩发烧怎么办怎样退烧快 发烧头疼怎么办最快最有效 发烧头晕怎么办最快最有效 婴儿发烧怎么办最快最有效 孩子一直37度8怎么办 一岁半宝宝37度5怎么办 发烧打了针35度怎么办 小孩发烧吃了鱼怎么办