场景:

步骤<1>在FragmentA 中触发显示DialogFragmentB,并传递参数数据mA2B给DialogFragmentB,在DialogFragmentB获取该参数--mA2B。

步骤<2>在DialogFragmentB中对传递的参数mA2B进行一些处理得到结果mB2A,最后点击“完成”,需要将mB2A回传给FragmentA中。

步骤<1><2>中的数据传递如何完成呢?

步骤<1>数据传递方法如下:

该步骤的中的数据传递与获取方式与一般的Fragment数据传递获取方式一样,就是利用Fragment的setArguments(Bundle bundle)方法进行数据传递(将需要传递的数据保存在Bundler对象中即可),利用Fragment的getArguments()来获取Bundle,从中取出数据即可。

从FragmentA中传递mA2B到DialogFragmentB:利用DialogFragmentB的setArguments()方法传递数据mA2B(将mA2B保存到Bundle对象中);

在DialogFragmentB获取mA2B: 在DialogFragmentB的onCreate()方法中调用getArguments(),获取Bundle对象,从中取出mA2B即可;

(1)在FragmentA中启动DialogFragmentB的代码如下:

DialogFragmentB fragmentB = DialogFragmentB.newInstance(mA2B);
fragmentB.setTargetFragment(FragmentA.this, FRAGMNET_A_2_FRAGMENT_B_REQUEST_CODE);
fragmentB.show(getChildFragmentManager(),DIALOG_FRAGMNET_B_TAG);

(2)DialogFragmentB的newInstance()方法如下:

public static DialogFragmentB newInstance(A2B a2b) {  DialogFragmentB fragmentB = new DialogFragmentB();  Bundle bundle = new Bundle();  bundle.putSerializable(ARGUMENTS_A_2_B_KEY,a2b);  filterFragment.setArguments(bundle);  return fragmentB;  }

(3) 在DialogFragmentB 的onCreate()方法获取mA2B,如下 :

@Override  public void onCreate(@Nullable Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  Bundle bundle = getArguments();  if (bundle != null) {  Object a2bObj = bundle.getSerializable(ARGUMENTS_A_2_B_KEY);  mA2B = a2bObj instanceof A2B ? (A2B) tagInfoObj : null;  }  }

步骤<2>数据传递方法如下:

从DialogFragmentB中传递mB2A数据到FragmentA中,这里主要是利用DialogFragmentB的getTargetFrament().onActivityResult()方法。

(1)在DialogFragmentB中设置mB2A数据,以传递给FragmentA

if (getTargetFragment() != null) {  Intent resultIntent = new Intent();  resultIntent.putExtra(ARGUMENTS_B_2_A_KEY,mB2A);  getTargetFragment().onActivityResult(DialogFragmentB.FRAGMNET_A_2_Fragment_B_REQUEST_CODE,  Activity.RESULT_OK,  resultIntent);  }

(2)在FragmentA的onActivityResult的方法中获取到mB2A

@Override  public void onActivityResult(int requestCode, int resultCode, Intent data) {  super.onActivityResult(requestCode, resultCode, data);  switch (requestCode) {  case FRAGMNET_A_2_FRAGMENT_B_REQUEST_CODE:  if (resultCode == Activity.RESULT_OK && data != null) {//获取从DialogFragmentB中传递的mB2ABundle bundle = data.getExtras();  if (bundle != null) {  Object object = bundle.get(DialogFragmentB.ARGUMENTS_B_2_A_KEY);  if (object instanceof B2A) {  mB2A = (B2A) object;  //to do other operation   //to do xxxxxx   }  }  }  break;  default:  break;  }  }

Fragment 与DialogFragment 相互之间传递数据相关推荐

  1. Fragment传递数据

    文章目录 Fragment与Activity之间 Activity向Fragment传递数据 通过构造方法的参数传递 代码示例 Fragment对外提供设置数据的方法,也就是public类型的方法 代 ...

  2. Fragment 之间传递数据

    关于Fragment 之间的跳转这里就不再说了 有兴趣的可以看我的这边博客 Fragment 跳转 ,,,点击查看把 Fragment 跳转首先先跳转到宿主的Activity 上 这里以在同一个Act ...

  3. android fragment传递数据,Android 两个Fragment之间传递数据实例详解

    Android 两个Fragment之间如何传递数据 FragmentA启动FragmentB,做一些选择操作后,返回FragmentA,需要把FragmentB里面选择的数据传回来.有什么办法? F ...

  4. 两个Fragment之间如何传递数据

    FragmentA启动FragmentB,做一些选择操作后,返回FragmentA,需要把FragmentB里面选择的数据传回来.有什么办法? Fragment之间不能直接通信,必须通过Activit ...

  5. activity 点击后传递数据给fragment_Fragment 新特性 : Fragment Result API 使用以及源码分析

    原标题: Android Fragments: Fragment Result 原文地址: https://proandroiddev.com/android-fragments-fragment-r ...

  6. Fragment与Activity传递数据

    MainActivity如下: package cc.testsimplefragment0;import android.os.Bundle; import android.app.Activity ...

  7. android 基类fragment,Android DialogFragment 基类的定制

    鸿洋博客介绍:DialogFragment的基本使用 好处: 1:使用DialogFragment来管理对话框,当旋转屏幕和按下后退键时可以更好的管理其声明周期,它和Fragment有着基本一致的生命 ...

  8. 【OpenGL】向Shader中传递数据

    传递顶点属性信息 之前讲过,vertex shader会被每个顶点调用,通常一个顶点会包含很多信息,例如顶点坐标.顶点法向量.纹理坐标等等,我们称这些信息为顶点的属性.在之前的OpenGL版本里,每个 ...

  9. 【Flutter】Flutter 混合开发 ( 安卓端向 Flutter 传递数据 | FlutterFragment 数据传递 | FlutterActivity 数据传递 )

    文章目录 前言 一.FlutterFragment 数据传递 二.FlutterActivity 数据传递 三.相关资源 前言 在上一篇博客 [Flutter]Flutter 混合开发 ( 关联 An ...

最新文章

  1. Ubuntu安装TensorFlow
  2. 科大星云诗社动态20201118
  3. MyEclipse完好提示配置
  4. python stdout stderr 一起输出_python – 使用subprocess.Popen()时,stderr和stdout没有输出
  5. Windows Communication Foundation from msdn
  6. jsp,jstl checkbox 回显方法
  7. java判断读到末尾_Java Web入门之java--第一节 java 简介及开发环境安装
  8. 第6集_奇点和安迪吃饭1 第一次见面
  9. CheckStyle检查规则模板说明
  10. ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案(转)
  11. 【POJ 1182】食物链【“拓展域”并查集】
  12. 觅风易语言[11-20]
  13. Centos 7 mysql 数据库安装和配置
  14. JSON字符串如何转化成对象?
  15. 处理 /home/china/.vimrc 时发生错误: 第1行: E492: 不是编辑器的命令
  16. python npv 计算公式_Python for NPV and IRR
  17. 加盐密码哈希:如何正确使用 (密码加密的经典文章)
  18. 用前端技术实现2d动画和特效(canvas)
  19. iMeta高被引论文|西农焦硕/韦革宏等-干旱生态系统中土壤真菌与细菌群落构建的关系...
  20. 原生js制作扫雷-自定义难度

热门文章

  1. LInux之建立文件和目录
  2. Matlab中的文件读取函数
  3. [POJ1338]Ugly Numbers
  4. Java---设计模块(单例的变形)(多例)
  5. Asp.Net Mvc - 在OnResultExecut* 拦截Action返回的HTML
  6. Android AsyncTask两种线程池分析和总结
  7. P2839 [国家集训队]middle
  8. Metasploit Framework(1)基本命令、简单使用
  9. 管理集群中的 crs 管理员
  10. linux mysql 操作命令