代码地址如下:
http://www.demodashi.com/demo/12228.html

记得把这几点描述好咯:代码实现过程 + 项目文件结构截图 + 演示效果

前言

在我们项目的进行中不可避免的会用到弹框的使用,我们也经常的使用dialog相关知识来创建一个弹出框,但今天我要讲解的是用DialogFragment的方式来快速创建一个简约风格的弹出框,它相较于dialog来创建弹出框的优势在:

dialog在关闭的时候,容易发生内存泄漏,而dialogFragment是和activity的生命周期绑定的,dialogFragment自身对内存做了些处理,它不仅具备dialog功能,还避免了内存的泄露,特别是在手机进行横竖屏切换的时候

下面我就来讲讲DialogFragment创建dialog相关的知识。

程序实现

一.dialogFragment创建dialog的方式

dialogFragment创建dialog的方式有两种:

  1. 通过重写 onCreateDialog(Bundle savedInstanceState) 方法创建默认dialogFragment
  2. 通过重写 onCreateView 方法来自定义dialogFragment

由于今天讲解的是通过快速的方式创建dialog,就讲解第一种方式

具体思路是写一个类去继承AppCompaDialogFragment,然后重写onCreateDialog方法来实现dialog的创建

然后我自己新建了一个DefaultDialogFragment对默认DialogFragment进行了封装,下面就来讲讲DefaultDialogFragment的具体使用。

一.DefaultDialogFragment初始化
private DefaultDialogFragment mDefaultDialogFragment;

mDefaultDialogFragment=new DefaultDialogFragment();
二.DefaultDialogFragment设置标题
setTitle(String title)
三.DefaultDialogFragment设置标题
setMessage(String message)
四.DefaultDialogFragment设置是否可按返回键消失

默认为true,即点击返回键会消失

setCancel(boolean canDismiss)
五.设置是否可点击屏幕dialog外部区域消失

默认为true,即点击屏幕dialog外部区域会消失

setCancelOnTouchOutside(boolean canDismiss)
六.设置dialog背景色
setBackGround(int rid)
七.监听确认点击事件
setPositiveListener(String positiveText, DialogInterface.OnClickListener onClickListener)
八.监听取消点击事件
setNegativeListener(String negativeText, DialogInterface.OnClickListener onClickListener)
九.显示dialogFragemnt
showDialog(FragmentManager fragmentManager)
十.dialogFragemnt显示类型

DefaultDialogFragment支持链式调用,如果你想只显示提示语而没有点击事件(即没有确认和取消按钮),你可以这样调用:

mDefaultDialogFragment=new DefaultDialogFragment();
mDefaultDialogFragment.setTitle("提示")//设置标题
.setMessage("我是提示框")//设置提示语
.setCancel(true)//设置是否可按返回键消失
.setCancelOnTouchOutside(true)//设置是否可点击屏幕dialog外部区域消失
.setBackGround(R.color.color_f66f6f)//设置dialog背景色
.showDialog(getSupportFragmentManager());//显示dialog

只包含一个确认按钮,你可以这样调用:

 mDefaultDialogFragment=new DefaultDialogFragment();
mDefaultDialogFragment.setTitle("提示")//设置标题
.setMessage("我是带确认按钮提示框")//设置提示语
.setCancel(true)//设置是否可按返回键消失
.setCancelOnTouchOutside(true)//设置是否可点击屏幕dialog外部区域消失
.setBackGround(R.color.color_f66f6f)//设置dialog背景色
.setPositiveListener("确定",new DialogInterface.OnClickListener(){//设置确定按钮事件
@Override
public void onClick(DialogInterface dialog, int which) {
ToastUtil.showShortToast(MainActivity.this,"确定");
}
})
.showDialog(getSupportFragmentManager());//显示dialog

只包含一个取消按钮,你可以这样调用:

 mDefaultDialogFragment=new DefaultDialogFragment();
mDefaultDialogFragment.setTitle("提示")//设置标题
.setMessage("我是带取消按钮提示框")//设置提示语
.setCancel(true)//设置是否可按返回键消失
.setCancelOnTouchOutside(true)//设置是否可点击屏幕dialog外部区域消失
.setBackGround(R.color.color_f66f6f)//设置dialog背景色
.setNegativeListener("取消", new DialogInterface.OnClickListener() {//设置取消按钮事件
@Override
public void onClick(DialogInterface dialog, int which) {
ToastUtil.showShortToast(MainActivity.this,"取消");
}
})
.showDialog(getSupportFragmentManager());//显示dialog

dialog中既有确认按钮也有取消按钮,你可以这样调用:

  mDefaultDialogFragment=new DefaultDialogFragment();
mDefaultDialogFragment.setTitle("提示")//设置标题
.setMessage("我是两个按钮均有的提示框")//设置提示语
.setCancel(true)//设置是否可按返回键消失
.setCancelOnTouchOutside(true)//设置是否可点击屏幕dialog外部区域消失
.setBackGround(R.color.color_f66f6f)//设置dialog背景色
.setPositiveListener("确定",new DialogInterface.OnClickListener(){//设置确定按钮事件
@Override
public void onClick(DialogInterface dialog, int which) {
ToastUtil.showShortToast(MainActivity.this,"确定");
}
})
.setNegativeListener("取消", new DialogInterface.OnClickListener() {//设置取消按钮事件
@Override
public void onClick(DialogInterface dialog, int which) {
ToastUtil.showShortToast(MainActivity.this,"取消");
}
})
.showDialog(getSupportFragmentManager());//显示dialog
dialogFragemnt运行效果图

dialogFragemnt项目结构图

DialogFragment创建默认dialog

代码地址如下:
http://www.demodashi.com/demo/12228.html

注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权

DialogFragment创建默认dialog的更多相关文章

  1. Android Dialogs(2)最好用DialogFragment创建Dialog

    Creating a Dialog Fragment You can accomplish a wide variety of dialog designs—including custom layo ...

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

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

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

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

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

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

  5. Android创建自定义dialog方法详解-样式去掉阴影效果

    在自定义组件时,从已有组件源码中会很大收获.就拿progressDialog来说     间接父类是dialog,想了解dialog继承结构可以去百度,或者    从构造器来说ProgressDial ...

  6. oracle创建默认表空间---重要

    当oracle创建数据库后,sys创建用户时还要有默认表空间.不创建默认表空间在导如项目时会有些数据表导入不成功! 由于时间仓促以截屏为例  之后会在刚刚那个空文件生成一个文件 ----------- ...

  7. nginx创建默认虚拟主机

    创建默认虚拟主机配置文件作用:禁止任何人通过ip或未允许的域名访问web服务. 如:vim vhosts/default.conf server { listen 80 default; server ...

  8. [UE][虚幻]创建默认媒体打包资源路径

    **创建默认媒体打包资源路径** **个人笔记**   **翻阅官方资料,实践出来的!**   **转载,"借鉴",重写...其他行为必须标明出处!!!** UE 官方默认有一个专 ...

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

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

随机推荐

  1. POCO库中文编程参考指南(6)Poco::Timestamp

    1 类型别名 三个时间戳相关的类型别名,TimeDiff表示两个时间戳的差,第二个是以微秒为单位的时间戳,第三个是以 100 纳秒(0.1 微妙)为单位的时间戳: typedef Int64 Time ...

  2. MySql实现分页查询的SQL,mysql实现分页查询的sql语句(转)

    http://blog.csdn.net/sxdtzhaoxinguo/article/details/51481430 摘要:MySQL数据库实现分页查询的SQL语句写法! 一:分页需求: 客户端通 ...

  3. Appium+python自动化7-输入中文【转载】

    前言 在做app自动化过程中会踩很多坑,咱们都是用的中文的app,所以首先要解决中文输入的问题! 本篇通过屏蔽软键盘,绕过手机的软键盘方法,解决中文输入问题. 一.定位搜索 1.打开淘宝点搜索按钮,进 ...

  4. hdu 1162(最小生成树)

    Eddy's picture Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  5. 【原创】BI解决方案选型之ETL数据整合工具对比

    一.背景 在企业BI平台建设过程中,数据整合始终是一切的基础,简单BI项目可以通过存储过程来实现,而复杂.全面.多方异构数据来源等就大大增加了复杂性,存储过程的可管理性.可维护性.容错性等就无法很好的 ...

  6. 【原创】SSAS-引用维度与多数据源、多数据源视图引发分区错误

    背景: 最近有个项目,有32家分公司,集团总部需要取这个32家分公司数据做分析,由于每个分公司的数据都比较庞大,所以最终方案是每个分公司一个DW,在cube搭建过程中将每个公司数据作为一个分区数据的来 ...

  7. 使用webView的时候,出现Error loading page Domain:WebKitErrorDomain Error Code:101 Description: The URL can't be shown

    onShouldStartLoadWithRequest = (e) => {// Implement any custom loading logic here, don't forget t ...

  8. HDU 4920.Matrix multiplication-矩阵乘法

    Matrix multiplication Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/ ...

  9. (6)C#项目结构

    一.项目下Properites文件夹 Properties文件夹 定义你程序集的属性 项目属性文件夹 一般只有一个 AssemblyInfo.cs 类文件,用于保存程序集的信息,如名称,版本等,这些信 ...

  10. Mysql 通用二进制包安装

    通用二进制包安装 注意:这里有严格的平台问题: 使用时:centos5.5版本   (类似Windows下的绿色包) 下载(mirrors.sohu.com/mysql)   直接使用tar 解压到指 ...