csdnActivity和Fragment之间的数据通信有两种:Activity向Fragment中传递数据、Fragment向Activity传递数据。

学习Android的同学注意了!!!

学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Android学习交流群,群号码:364595326  我们一起学Android!

同时Activity之间也能传递数据,Fragment之间又能传递数据。本文主要是总结自己在项目中遇到的问题以及解决办法!

Activity向Fragment中传递数据

项目中遇到的问题:项目采用的是一个MainActivity + 4个Fragment搭建的框架,其余的小功能采用的是Activity去实现;在实现个人中心(Fragment)时需要将登录的用户名返回给个人中心显示在页面上。

我的实现方法:

通过用户注册时向数据库中插入用户信息,在用户中心判断用户是否存在,存在则显示用户名。这个方法有点不像Fragment向Activity传递数据的解决办法。但是能实现我所要求的功能。(本人小白,能实现功能已经高兴一天了,哈哈)

网上的数据传递方法 1(链接):

给Fragment添加newInstance方法,将需要的参数传入,设置到bundle中,然后setArguments(bundle),最后在onCreate中进行获取;

注意事项:setArguments方法必须在fragment创建以后,添加给Activity前完成。千万不要,首先调用了add,然后设置arguments

网上的数据传递方法 2

直接在Fragment中采用getActivity.getIntent()拿到Activity中的参数,故此能拿到Activity中的方法

网上的数据传递方法 3

Activity在切换Fragment的时候,通过setArguments向Fragment传递参数,Fragment通过getArguments();获得从activity中传递过来的值

Fragment向Activity传递数据

网上的数据传递方法 1(链接):

在Fragment中写一个回调接口

在Activity中实现这个接口

在Fragment中的onAttach方法中得到Activity中实现好的实例化接口对象

用接口对象进行传值

Activity向Activity传递数据

第一行代码中写到:

活动之间传递数据可以采用new Intent().putExtra()方法传递,putExtra()方法的第一个参数是键,第二个参数是值;在第二个Activity中getIntent即可拿到第一个Activity传递过来的intent,在通过intent.get…Extra()过来方法拿到第一个Activity传递过来的数据。

使用Bundle来传递数据:首先创建一个Bundle对象,采用bundle.putExtra()方法,道理同上,接着intent.putExtra(bundle)传递数据。在第二个Activity中getIntent即可拿到第一个Activity传递过来的bundle,在通过bundle.get…Extra()过来方法拿到第一个Activity传递过来的数据。

Activity返回数据给上一个Activity

第一行代码中如此写到:

在第一个Activity中启动第二个Activity:startActivityForResult(intent,1)//第一个参数是intent,第二个参数是请求码,只要值唯一就ok

在第二个Activity中用intent携带数据,然后setResult(RESULR_OK,intent);将数据返回,最后finish();关闭当前Activity(切记一定要关闭当前Activity)

在第一个Activity中重写onActivityResult( int requestCode,int resultCode,Intetnt data)方法,通过判断requestCode来识别是哪个Activity返回的数据,在判断返回数据的处理结果,最后通过data.getStringExtra()方法拿到数据。

Fragment向Fragment传递数据

回顾项目中采用一个MainActivity + 4个Fragment搭建的框架,那么我想在其中的两个Fragment之间有数据交互怎么解决?

第一行代码中如此说道:

首先在一个Fragment中拿到与之相关联的Activity,然后通过这个Activity去获取另一个Fragment,这样就实现了Fargment与Fragment之间的通信

网上的说法(链接):

在Fragment2中,新建一个函数:newInstance(String text)来接收传过来的参数

然后在Fragment2的OnCreateView的时候再从arguments中获取参数

在Fragment1中,在调起Fragmen2t时,通过调用newInstance函数来获取实例并传递参数

Fragment2返回数据给ragment1

采用回调方法实现[直接看第三部分](链接)

总结

数据传递出去:

可以采用intent,或者bundle传递出去

可以采用新建一个setValue方法将数据传递出去

采用回调方法实现数据传递

数据传递回来:

采用接口回调方式

因此接口回调方法很重要,一点要掌握!!

更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. 一句话锁定MySQL数据占用元凶
  3. android 唯一识别码笔记
  4. Android抓取CSDN首页极客头条内容--网页数据抓取
  5. Android实现记事本功能
  6. *.android.com上不去的解决方法
  7. Android中Intent传递Java对象的方法
  8. Android(安卓)Tabhost使用方法详解
  9. Android事件传递总结

随机推荐

  1. Carrier Configuration in Android(安卓)
  2. Android(安卓)config.gradle
  3. Android当方法总数超过64K时(Android(安
  4. Android(安卓)Media Scanner Process
  5. android 导入工程出现很多错误 cannot be
  6. android之无返回结果跳转intent
  7. android折叠展开列表测试
  8. android webview 面试
  9. android中调用金山词霸
  10. android帧动画