android fragement之间互相传递参数

举报
再见孙悟空_ 发表于 2022/01/13 00:10:06 2022/01/13
【摘要】 在Activity中加载Fragment的时候、有时候要使用多个Fragment切换、并传值到另外一个Fragment、也就是说两个Fragment之间进行参数的传递、查了很多资料、找到两种方法、一种是通过共同的Activity传递、这种方法是在Activity里面添加一个字段、来临时保存要一些值。 其实我开始想的是用SharedPr...

在Activity中加载Fragment的时候、有时候要使用多个Fragment切换、并传值到另外一个Fragment、也就是说两个Fragment之间进行参数的传递、查了很多资料、找到两种方法、一种是通过共同的Activity传递、这种方法是在Activity里面添加一个字段、来临时保存要一些值。

其实我开始想的是用SharedPreferences,不过想想太麻烦!

然后翻了一下Fragment的API、找到了另外一个方法来传递、就像Activity一样便捷的实现参数传递程序中的一段代码、是通过Bundle来传递的、相比之下第一种方法要简单一点

FRAGMENT参数传递方法一

在Activity中定义一个字段、然后添加set和get方法、代码如下、mTitle就是要传递的参数、如果是传递对象、可以把mTitle换成一个对象即可


  
  1. public class DemoActivity {
  2. private String mTitle;
  3. public String getmTitle() {
  4. return mTitle;
  5. }
  6. public void setmTitle(String title) {
  7. this.mTitle = title;
  8. }
  9. }

Fragment调用方法、需要注意的是在设值的时候要进行强转一下

((DemoActivity)getActivity()).getmTitle();
 

FRAGMENT参数传递方法二

可以使用bundle进行参数传递、这样在两个Fragment跳转的时候就可以带上参数了、同样也可以传递一个复杂的对象


  
  1. <pre name="code" class="java"> ft.hide(getActivity().getSupportFragmentManager().findFragmentByTag(""));
  2. DemoFragment demoFragment = new DemoFragment();
  3. Bundle bundle = new Bundle();
  4. bundle.putString("key", "这是方法二");
  5. demoFragment.setArguments(bundle);
  6. ft.add(R.id.fragmentRoot, demoFragment, SEARCHPROJECT);
  7. ft.commit();


在另外一个Fragment获取参数的方式只需要一个语句、key是自己定义的一个标识、参数的形式只要bundle能传递都可以实现

String string = getArguments().getString("key");  
 

总结

从上面两种方法看来、方法一要简单一些、但个人觉得有点投机取巧、不过也很合Java的开发规范、如果是同一个Activity中要加载很多Fragment的话、这种方法无疑要简单很多

而方法二是使用了Android的Bundle传递的、这种方法应该更官方一点吧、不过在项目开发中、怎么实现简单就怎么来、也没太多关系

有任何疑问或要获取更多代码、可以在下面进行评论哈

文章来源: wukong.blog.csdn.net,作者:再见孙悟空_,版权归原作者所有,如需转载,请联系作者。

原文链接:wukong.blog.csdn.net/article/details/44857505

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。