回调Activity中的函数

http://developer.android.com/guide/topics/ui/dialogs.html#PassingEvents

在DialogFragment中,定义Interface,然后在onAttach中绑定,最后在每个按钮的回调函数中调用Interface中定义的函数

在Activity中,实现Interface中定义的函数

Interface中定义的函数参数可以任意指定,因此可以用来在从DialogFragment向Activity传递参数

http://developer.android.com/reference/android/app/DialogFragment.html#AlertDialog

在DialogFragment中,直接在每个按钮的回调函数中调用Interface中定义的函数

在Activity中,实现Interface中定义的函数

Interface中定义的函数参数可以任意指定,因此可以用来在从DialogFragment向Activity传递参数

自定义Dialog界面,传递参数到Activity

使用OnCreateDialog()

第一种方法:

局部变量view需要声明为final

public class AllBonusDialogFragment extends DialogFragment {
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
final View view = inflater.inflate(R.layout.input_dialog, null);
builder.setView(view)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
EditText allBonusEdit = (EditText)view.findViewById(R.id.inputDialogEdit);
String allBonusStr = allBonusEdit.getText().toString();
double allBonus = Double.parseDouble(allBonusStr);
mListener.onDialogPositiveClick(allBonus);
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
mListener.onDialogNegativeClick();
}
});
return builder.create();
}

第二种方法:

把view声明为成员变量

public class AllBonusDialogFragment extends DialogFragment {
View view = null;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
view = inflater.inflate(R.layout.input_dialog, null);
builder.setView(view)
.setPositiveButton("确定", new PositiveOnClickListener())
.setNegativeButton("取消", new NegativeOnClickListener());
return builder.create();
} class PositiveOnClickListener implements DialogInterface.OnClickListener {
@Override
public void onClick(DialogInterface dialog, int which) {
EditText allBonusEdit = (EditText)view.findViewById(R.id.inputDialogEdit);
String allBonusStr = allBonusEdit.getText().toString();
double allBonus = Double.parseDouble(allBonusStr);
mListener.onDialogPositiveClick(allBonus);
}
} class NegativeOnClickListener implements DialogInterface.OnClickListener {
@Override
public void onClick(DialogInterface dialog, int which) {
mListener.onDialogNegativeClick();
}
}

使用OnCreateView()

《Pro Android 4》Chapter 9:Working With Dialogs

http://blog.csdn.net/flowingflying/article/details/13505409

使用DialogFragment创建对话框总结的更多相关文章

  1. [Android Pro] Android 官方推荐 : DialogFragment 创建对话框

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37815413 1. 概述 DialogFragment在android 3.0时 ...

  2. 转帖:Android 官方推荐 : DialogFragment 创建对话框

    转: Android 官方推荐 : DialogFragment 创建对话框 复制内容,留作备份 1. 概述 DialogFragment在android 3.0时被引入.是一种特殊的Fragment ...

  3. Android 官方推荐 : DialogFragment 创建对话框

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37815413 1. 概述 DialogFragment在android 3.0时 ...

  4. Android控件大全(一)——DialogFragment创建对话框

    DialogFragment在android 3.0时被引入.是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框.典型的用于:展示警告框,输入框,确认框等等. 在Dia ...

  5. 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器

    本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...

  6. 【Qt】2.3 使用Qt设计师来创建对话框

    安装完Qt OpenSource之后,在开始菜单目录下会有这几个东西. 其中[Designer]是用来设计窗口界面的程序.所以现在可以使用它来设计一个对话框.在[Qt Creator]中,[设计]这一 ...

  7. MFC编程入门之八(对话框:创建对话框类和添加控件变量)

    创建好对话框资源后要做的就是生成对话框类了.生成对话框类主要包括新建对话框类.添加控件变量和控件的消息处理函数. 例程Addition是基于对话框的程序,所以程序自动创建了对话框模板IDD_ADDIT ...

  8. [ucgui] 对话框1——创建对话框

    >_<" 小工具和对话框的区别: 小工具可以创建并独立使用,因为它们本质上就是窗口.但是,通常需要使用对话框,它是包含一个或多个小工具的窗口. 对话框通常是一个窗口,它在出现时会 ...

  9. MFC编程入门之六(对话框:创建对话框模板和修改对话框属性)

    本节开始为大家讲解偏向应用的知识--创建对话框.  对话框,大家应该很熟悉了,在我们常用的软件中大多都有对话框界面,例如,360安全卫士的主界面其实就是对话框,知识它做了很多美工方面的工作,将其大大美 ...

随机推荐

  1. Oracle修改表空间大小

    在向orale数据库导入数据的时候报 ORA-01658: 无法为表空间 XXX中的段创建 INITIAL 区错误. Oracle我在创建表空间的时候初始化大小为200M,当数据库中数据量达到这个值, ...

  2. 【BZOJ 1013】 [JSOI2008]球形空间产生器sphere

    Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁 ...

  3. 微软职位内部推荐-Senior Data Scientist

    微软近期Open的职位: Extracting accurate, insightful and actionable information from data is part art and pa ...

  4. MongoDB 学习

    MongoDB 的官方网站 :https://www.mongodb.org 可通过官方网站下载相应的文件 下载之后对文件进行解压 http://www.cnblogs.com/huangxinche ...

  5. Mybatis的分页查询

    示例1:查询业务员的联系记录 1.控制器代码(RelationController.java) //分页列出联系记录 @RequestMapping(value="toPage/custom ...

  6. POJ2187Beauty Contest

    http://poj.org/problem?id=2187 题意 :有一个农场有N个房子,问最远的房子相距多少距离 . 思路 :凸包,旋转卡壳,通过寻找所有的对锺点,找出最远的点对. #includ ...

  7. hdu 4559 涂色游戏 博弈论

    构造SG函数:sg[i]表示2*i的sg值!! 代码如下: #include<iostream> #include<stdio.h> #include<algorithm ...

  8. jsp关于include html、jsp等文件出现乱码问题的解决方案

    一般来说使用jsp标签<jsp:include>引入一个jsp文件: ①可以在被引入的jsp中加入:<%@ page contentType="text/html;char ...

  9. lsof命令总结

    1.lsof 简介 lsof 是 linux 下的一个非常实用的系统级的监控.诊断工具.它的意思是 List Open Files,很容易你就记住了它是 “ls + of”的组合~它可以用来列出被各种 ...

  10. mac中用命令行运行mysql

    1,安装mysql 在mysql的官方网站下载 mysql 5.5.23 http://www.mysql.com/downloads/mysql/,根据我的机器的配置情况选择了64bit版本. 2, ...