DialogFragment学习笔记
- 创建DialogFragment
跟通常的创建Fragment差不多,XML,继承DialogFragment,复写onCreateView()
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_dialog_color, container , false);
return view;
}
- 显示DialogFragment
和其他fragment一样, DialogFragment 实例也是由托管activity的 FragmentManager 管理着的。要将 DialogFragment 添加FragmentManager 管理并放置到屏幕上,可调用fragment实例的以下方法:
public void show(FragmentManager manager , String tag)
public void show(FragmentTransaction trasaction , String tag)
string参数可唯一识别存放在 FragmentManager 队列中的 DialogFragment 。可按需选择究竟是使用 FragmentManager 还是FragmentTransaction 。如传入 FragmentManager 参数,则事务可自动创建并提交。这里我们选择传入 FragmentManager 参数。代码如下:
FragmentManager fm = getFragmentManager();
ColorDialogFragment dialog = ColorDialogFragment.newInstance();
dialog.setTargetFragment(this , REQUEST_COLOR);
dialog.show(fm , DIALOG_COLOR);
这样便启动了这个DialogFragment。
- Fragment之间的数据传递
如何实现由同一个Activity托管的两个Fragment之间的数据传递呢?
1>将主Fragment(这里暂且这么称呼)的数据传递给DialogFragment可以通过setArgument()来实现。如:

然后通过newInstance()来获取对象传入参数即可。
2>返回数据给主Fragment则需要用到setTargetFragment(Fragment fragment , int requestCode)
该方法接受目标fragment以及一个类似于传入 startActivityForResult(...) 方法的请求代码作为参数。随后,目标fragment可使用该请求代码通知是哪一个fragment在返回数据信息。目标fragment以及请求代码由 FragmentManager 负责跟踪记录,我们可调用fragment(设置目标fragment的fragment)的 getTargetFragment() 和 getTargetRequestCode() 方法获取它们。
1.设置Target Fragment

2.传递数据给Target Fragment
类似Activity传递数据,使用Fragment.onActivityResult(int, int, Intent) 方法传递数据。
Activity.onActivityResult(...) 方法是 ActivityManager 在子activity销毁后调用的父activity方法。处理activity间的数据返回时,无需亲自动手, ActivityManager 会自动调用 Activity.onActivityResult(...) 方法。父activity接收到 Activity.onActivityResult(...) 方法的调用后,其FragmentManager 会调用对应fragment的 Fragment.onActivityResult(...) 方法。
处理由同一activity托管的两个fragment间的数据返回时,可借用 Fragment.onActivityResult(...) 方法。因此,直接调用目标fragment的 Fragment.onActivityResult(...) 方法,即可实现数据的回传。可在DialogFragment中新建一个方法如:

然后调用该方法即可,如:setResult(Activity.RESULT_OK);
再复写主Fragment中的onActivityResult()即可得到传回的数据,如:

参考:《Android编程权威指南》
DialogFragment学习笔记的更多相关文章
- 【转】 Pro Android学习笔记(四五):Dialog(2):DialogFragment
[-] 重写onCreateView 通过onCreateView设置UI和按键反馈 信息保存 重写onCreateDialog DialogFragment的实例newInstance()已经在上一 ...
- Android:日常学习笔记(8)———探究UI开发(2)
Android:日常学习笔记(8)———探究UI开发(2) 对话框 说明: 对话框是提示用户作出决定或输入额外信息的小窗口. 对话框不会填充屏幕,通常用于需要用户采取行动才能继续执行的模式事件. 提示 ...
- 【转】 Pro Android学习笔记(五六):配置变化
目录(?)[-] Activity的destorycreate过程 Fragment的destorycreate过程 onSaveInstanceState saveFragmentInstanceS ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
随机推荐
- java 基础的几种算法
1:冒泡排序:2个之间进行循环筛选 public void sort(int[] a) { int temp = 0; for (int i = a.length - 1; i > 0; i ...
- PAT (Advanced Level) 1112. Stucked Keyboard (20)
找出一定没问题的字符(即一连串的额字符x个数能被k整除的),剩下的字符都是可能有问题的. #include<cstdio> #include<cstring> #include ...
- Datatable.select() 方法的使用
文章为转载 ,原文地址 DataTable是我们在进行开发时经常用到的一个类,并且经常需要对DataTable中的数据进行筛选等操作,下面就介绍一下Datatable中经常用到的一个方法--Selec ...
- Entity Framework 6新功能Logging/Store Procedure
摘要 在Entity Framework6中有两个新的功能,DB Loggin和Stored Procedure的映射 Entity Framework 6已经从Beta版本来到了RC1版本,我们可以 ...
- JavaBean-- 设置和取得属性
<jsp:setProperty>标签一共有4种使用方法: 自动匹配:<jsp:setProperty name="实例化对象的名称(id)" property= ...
- Ubuntu安装完后设置root密码
安装完Ubuntu 14.04后默认是没有主动设置root密码的,也就无法进入根用户. 相关阅读: Ubuntu 14.04 下载.安装.配置 整理汇总 页面 http://www.linuxidc. ...
- C#入门经典第十章类的成员-1
类成员的访问级别 public 成员可以由任何代码访问,公共的. private 私有的,成员只能有类中的代码访问.(默认的关键字) internal 内部的,成员只能有定义它的程序集(项目)内部 ...
- 关于sqlserver还原不了数据库的原因
因为备份文件需要在服务器上打成压缩包,才能进行传输,不然会丢失数据..
- 货物搬运(move)
货物搬运(move) 题目描述 天地无情人有情,一方有难八方支援!汶川大地震发生后,灾区最紧缺的是救灾帐篷,全国各地支援的帐篷正紧急向灾区运送.假设围绕纹川县有环行排列的n个救灾帐篷的存储点,每个存储 ...
- vim Podfile
platform :ios, "7.0"pod "AFNetworking"pod "SDWebImage"pod "SVProg ...