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组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
随机推荐
- android 内存优化一
常见内存泄露原因 Context对象泄漏 1.如果一个类持有Context对象的强引用,就需要检查其生存周期是否比Context对象更长.否则就可能发生Context泄漏. 2.View持有其创建所在 ...
- PAT1004
A family hierarchy is usually presented by a pedigree tree. 一个家族的层次结构经常用一个血缘树来呈现. Your job is to cou ...
- sphinx query multiple indexes in php
http://stackoverflow.com/questions/17494784/searching-a-particular-index-using-sphinx-from-multiple- ...
- 求余区间的求和类问题 离线+线段树 HDU4228
题目大意:给一个数组a,他的顺序是严格的单调增,然后有如下三个操作 ①加入一个val到a数组里面去,加入的位置就是a[i-1]<val<a[i+1] ②删除一个a[i]=val的值 ③查询 ...
- OpenGL学习--------颜色的选择
OpenGL支持两种颜色模式:一种是RGBA,一种是颜色索引模式.无论哪种颜色模式,计算机都必须为每一个像素保存一些数据.不同的是,RGBA模式中,数据直接就代表了颜色:而颜色索引模式中,数据代表的是 ...
- ptrace
http://zhangwenxin82.blog.163.com/blog/static/114595956201171510512459/
- C++多线程一
CreateThread()创建一个新的线程. ExitThread()正常的结束一个线程的执行. CloseHandle()关闭一个线程的句柄. CreateThread()函数原型如下: HAND ...
- 破解JS加密:url unicode加密而已
加密所在的地方:http://tool.chinaz.com/Tools/UrlCrypt.aspx?url=www.baidu.com 结果: http://%77%77%77%2E%62%61%6 ...
- Chapter 1 First Sight——1
My mother drove me to the airport with the windows rolled down. 随着窗户渐渐摇下,我妈妈开着车送我去机场. It was seventy ...
- 事件g_Events
// Events.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include & ...