• 创建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学习笔记的更多相关文章

  1. 【转】 Pro Android学习笔记(四五):Dialog(2):DialogFragment

    [-] 重写onCreateView 通过onCreateView设置UI和按键反馈 信息保存 重写onCreateDialog DialogFragment的实例newInstance()已经在上一 ...

  2. Android:日常学习笔记(8)———探究UI开发(2)

    Android:日常学习笔记(8)———探究UI开发(2) 对话框 说明: 对话框是提示用户作出决定或输入额外信息的小窗口. 对话框不会填充屏幕,通常用于需要用户采取行动才能继续执行的模式事件. 提示 ...

  3. 【转】 Pro Android学习笔记(五六):配置变化

    目录(?)[-] Activity的destorycreate过程 Fragment的destorycreate过程 onSaveInstanceState saveFragmentInstanceS ...

  4. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  5. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  6. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  7. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  8. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  9. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

随机推荐

  1. android webview处理下载内容

    url = "http://m.mumayi.com/"; WebView = (WebView) findViewById(R.id.webView1); WebView.get ...

  2. Review Board的使用

    代码审核工具.先在命令行界面,进入到工程的Main目录下,然后使用命令 svn diff>yus.diff  这样就将Main里面的所有内容生成了,然后在浏览器里进入到自己的Review Boa ...

  3. ActionBar的简单使用

    只简单实现了一下ActionBar的使用,在右上角添加两个ActionBar,在左上角实现默认的返回箭头,类似于微信朋友圈的 这是MainActivity的代码: public class MainA ...

  4. AngularJs: Reload page

    <a ng-click="reloadRoute()" class="navbar-brand" title="home" data- ...

  5. Bootstrap 模态对话框只加载一次 remote 数据的解决办法 转载

    http://my.oschina.net/qczhang/blog/190215 摘要 前端框架 Bootstrap 的模态对话框,可以使用 remote 选项指定一个 URL,这样对话框在第一次弹 ...

  6. 【转】PHP里的basename函数不支持中文名的解决

    今天用到basename 函数获取文件名称时,发现如果是中文的文件名返回只有后缀的空文件名(如:.pdf)    string basename ( string path [, string suf ...

  7. js数据显示在文本框中(页面加载显示和按钮触动显示)

    web代码如下: <!DOCTYPE html> <html> <head> <title>jsTest02.html</title> &l ...

  8. UIView 面面观

    原创:转载请注明出处 1.UIView: 一个视图对象控制该区域的渲染,同时也控制内容的交互. 2.UIView的功能就是:展示.渲染.交互 3.UIView 和很多其他视图控件的默认tag值是0,所 ...

  9. C#对象序列化笔记

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.R ...

  10. PAT (Advanced Level) 1048. Find Coins (25)

    先对序列排序,然后枚举较小值,二分较大值. #include<iostream> #include<cstring> #include<cmath> #includ ...