DialogFragment创建默认dialog
记得把这几点描述好咯:代码实现过程 + 项目文件结构截图 + 演示效果
前言
在我们项目的进行中不可避免的会用到弹框的使用,我们也经常的使用dialog相关知识来创建一个弹出框,但今天我要讲解的是用DialogFragment的方式来快速创建一个简约风格的弹出框,它相较于dialog来创建弹出框的优势在:
dialog在关闭的时候,容易发生内存泄漏,而dialogFragment是和activity的生命周期绑定的,dialogFragment自身对内存做了些处理,它不仅具备dialog功能,还避免了内存的泄露,特别是在手机进行横竖屏切换的时候
下面我就来讲讲DialogFragment创建dialog相关的知识。
程序实现
一.dialogFragment创建dialog的方式
dialogFragment创建dialog的方式有两种:
- 通过重写 onCreateDialog(Bundle savedInstanceState) 方法创建默认dialogFragment
- 通过重写 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
注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权
DialogFragment创建默认dialog的更多相关文章
- Android Dialogs(2)最好用DialogFragment创建Dialog
Creating a Dialog Fragment You can accomplish a wide variety of dialog designs—including custom layo ...
- Android 官方推荐 : DialogFragment 创建对话框
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37815413 1. 概述 DialogFragment在android 3.0时 ...
- [Android Pro] Android 官方推荐 : DialogFragment 创建对话框
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37815413 1. 概述 DialogFragment在android 3.0时 ...
- 转帖:Android 官方推荐 : DialogFragment 创建对话框
转: Android 官方推荐 : DialogFragment 创建对话框 复制内容,留作备份 1. 概述 DialogFragment在android 3.0时被引入.是一种特殊的Fragment ...
- Android创建自定义dialog方法详解-样式去掉阴影效果
在自定义组件时,从已有组件源码中会很大收获.就拿progressDialog来说 间接父类是dialog,想了解dialog继承结构可以去百度,或者 从构造器来说ProgressDial ...
- oracle创建默认表空间---重要
当oracle创建数据库后,sys创建用户时还要有默认表空间.不创建默认表空间在导如项目时会有些数据表导入不成功! 由于时间仓促以截屏为例 之后会在刚刚那个空文件生成一个文件 ----------- ...
- nginx创建默认虚拟主机
创建默认虚拟主机配置文件作用:禁止任何人通过ip或未允许的域名访问web服务. 如:vim vhosts/default.conf server { listen 80 default; server ...
- [UE][虚幻]创建默认媒体打包资源路径
**创建默认媒体打包资源路径** **个人笔记** **翻阅官方资料,实践出来的!** **转载,"借鉴",重写...其他行为必须标明出处!!!** UE 官方默认有一个专 ...
- Android控件大全(一)——DialogFragment创建对话框
DialogFragment在android 3.0时被引入.是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框.典型的用于:展示警告框,输入框,确认框等等. 在Dia ...
随机推荐
- C++11 lambda表达式(19篇C++11文章)
C++11引入了lambda表达式,使得程序员可以定义匿名函数,该函数是一次性执行的,既方便了编程,又能防止别人的访问. Lambda表达式的语法通过下图来介绍: 这里假设我们定义了一个如上图的lam ...
- bisect维护已排序的序列
#!/usr/bin/env python # -*- coding:utf-8 -*- # author:love_cat import bisect # 用来处理已经排序好的序列,升序 # 二分查 ...
- android 画竖虚线
参考:http://blog.csdn.net/zhao2017/article/details/73866460 1.在Android中写横虚线比较简单,写竖虚线的话稍微麻烦点: 需要将写的虚线旋转 ...
- 向PE文件中空白处添加代码
// mem.cpp : 定义控制台应用程序的入口点. //PE文件从文件加载到内存,再从内存读取,然后存盘到文件 #include "stdafx.h" #include < ...
- Fiddler抓包11-HTTPS证书Actions无法导出问题【转载】
本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/fiddler/ 前言 在点Actions时候出现Export Failed:The r ...
- poj 3164(最小树形图模板)
题目链接:http://poj.org/problem?id=3164 详细可以看这里:http://www.cnblogs.com/vongang/archive/2012/07/18/259685 ...
- CentOS系统最小化安装没有wget解决方案
-bash: wget: command not found的两种解决方法 今天给服务器安装新LNMP环境时,wget 时提示 -bash:wget command not found,很明显没有安装 ...
- 通过GitHub部署项目到Nginx服务器
1.更新源: 2.安装nginx 3.安装成功 4.DNS域名解析 5.访问域名就会找到相应IP地址的主机,一个IP可对应多个域名 6.提交到gitHub 复制这两行 填上邮箱和密码 7.提交成功 8 ...
- 在libGDX中使用Spine骨骼动画
首先,github是个宝库,实践流的读者可以直接看例子进行学习 1.这是Spine官方给出的例子 https://github.com/EsotericSoftware/spine-superspin ...
- android如何取消闹铃
取消闹钟: Intent intent = new Intent(context, TestReceiver.class); PendingIntent pi = PendingIntent.getB ...