DialogFrament是Android sdk中的对话框基类,开发人员可以针对此类进行扩展。他可以扩展出Android中的多种对话框,比如alertdialog,listdialog,radiodialog等。android已经为开发人员提供了简单的对话框,本篇要讲的是对话框的扩展部分。本例是根据sdk开发文档而来。

1.建立textdialog

在layout文件夹下面,建立textdialog的xml文档。在xml文档中,我们只定义了一个textview。

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <TextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content" /> </LinearLayout>

textdialog

2.建立textdialog类

在src中添加新类TextDialogFragment,该类需要继承DialogFragment,并需要实现它的一些方法,比如onCreate(),onCreateView()等。在类中主要是为textview设置需要显示的字段,以及设置dialog显示的样式和主题等。这里是对DialogFragment扩展的主要部分,我们可以再这里定义自己的方法,定义事件等。不如诗listdialog,需要定义适配器,需要定义itemclick。

 public class TextDialogFramnet extends DialogFragment {

     int mNum;

     static TextDialogFramnet newInstance(int num)
{
TextDialogFramnet textdia=new TextDialogFramnet();
Bundle bundel=new Bundle();
bundel.putInt("name", num);
textdia.setArguments(bundel);
return textdia;
}
public void onCreate(Bundle saveInstanced)
{
super.onCreate(saveInstanced);
mNum=getArguments().getInt("name");
int style=DialogFragment.STYLE_NO_TITLE,theme=0;
switch((mNum-1)%6)
{
case 1:
style=DialogFragment.STYLE_NO_TITLE;
break;
case 2:
style=DialogFragment.STYLE_NO_FRAME;
case 3:
style = DialogFragment.STYLE_NO_INPUT;
break;
case 4:
style = DialogFragment.STYLE_NORMAL;
break;
case 5:
style = DialogFragment.STYLE_NORMAL;
break;
case 6:
style = DialogFragment.STYLE_NO_TITLE;
break;
case 7:
style = DialogFragment.STYLE_NO_FRAME;
break;
case 8:
style = DialogFragment.STYLE_NORMAL;
break;
}
switch((mNum-1)%6)
{
case 4:
theme=android.R.style.Theme_Holo; break;
case 5:
theme=android.R.style.Theme_Holo_Light_Dialog;
break;
case 6: theme = android.R.style.Theme_Holo_Light; break;
case 7: theme = android.R.style.Theme_Holo_Light_Panel; break;
case 8: theme = android.R.style.Theme_Holo_Light; break;
}
setStyle(style,theme);
}
public View onCreateView(LayoutInflater inflater,ViewGroup contaniner,Bundle savedInstance)
{
View v=inflater.inflate(R.layout.textdialog, contaniner,false);
TextView tv=(TextView)v.findViewById(R.id.text);
tv.setText("Dialog#"+mNum+":using style");
return v; }
}

TexDialogFragment

3.调用textdialog

在我们的activity中调用刚刚定义的对话框,首先需要对话框的实例化,然后根据对话框的需要,调用对话框的方法。最后是调用show()方法,显示该对话框。

  void showDialog() {
mStackLevel++; android.app.FragmentTransaction ft = getFragmentManager().beginTransaction();
android.app.Fragment prev = getFragmentManager().findFragmentByTag("dialog");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null); // Create and show the dialog.
DialogFragment newFragment = TextDialogFramnet.newInstance(mStackLevel);
newFragment.show(ft, "dialog");
}

showdialog

4.alertDialog

alertdialog 是sdk封装好的一个对话框,我们可以直接调用的。需要注意的是,该类是静态的,无需实例化,可以直接调用。

     new AlertDialog.Builder(MainActivity.this).setIcon(R.drawable.ic_launcher)
.setTitle("是否删除文件").setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
// TODO 自动生成的方法存根
new AlertDialog.Builder(MainActivity.this).setMessage("文件已经被删除").create().show();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
// TODO 自动生成的方法存根
new AlertDialog.Builder(MainActivity.this).setMessage("您已经选择取消按钮,文件未删除").create().show();
}
})
.show();

AlertDialog

该段代码实现了提示对话框,当我们删除的时候,可以弹出该对话框,并设置了setpositivebutton和setnegativebutton两个监听事件,分别对应确定和取消按钮。

Android学习之DialogFragment的更多相关文章

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

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

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

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

  3. 【转】Pro Android学习笔记(四六):Dialog(3):对话框弹对话框

    目录(?)[-] 帮助提示框的实现 实现再弹框 再谈fragment管理器 提示框的按钮Help,将触发弹出新的帮助提示框. 帮助提示框的实现 帮助提示框的实现很简单,利用重写onCreateView ...

  4. 【转】 Pro Android学习笔记(四三):Fragment(8):再谈Transaction和管理器

    目录(?)[-] Transaction的一些操作 再谈FragmentManager 调用其他fragment的方法 唤起activity 唤起fragment和相互通信 一些其它 Transact ...

  5. 【转】 Pro Android学习笔记(四四):Dialog(1):触发Dialog

    目录(?)[-] 创建dialog fragment Activity显示对话框 Android提供alert.prompt.pick-list,单选.多选,progress.time-picker和 ...

  6. Android学习路线总结,绝对干货

    title: Android学习路线总结,绝对干货 tags: Android学习路线,Android学习资料,怎么学习android grammar_cjkRuby: true --- 一.前言 不 ...

  7. Android 学习资源

    下面这些资源对Android开发来说是很有帮助的! 最常用的: Android开发官方网站:http://developer.android.com/index.html 这个网站应该是Android ...

  8. Android学习资料收集

    1.Android 学习之路 http://stormzhang.com/android/2014/07/07/learn-android-from-rookie/

  9. Android学习——第一个NDK程序

    在前面的学习中,我们已经讲解了关于NDK编程的环境搭建流程,简单的使用我们也通过官网本身自带的例子进行说明了.可是相信大家一定还存在这么的一个疑惑:“如果我要自己利用NDK编写一个Android应用, ...

随机推荐

  1. c++引擎开发

    MyMap.erase(Itor++); //在windows下也可以Itor = MyMap.erase(Itor),但是在linux下不行. 一个是把指针定为const .就是不能修改指针.也就是 ...

  2. 使用SqlBulkCopy批量插入数据

    static void Main(string[] args) { //定义与目标表结构相同的DataTable DataTable dataTable = new DataTable(); data ...

  3. Node.js实践第一天

    实践案例一 表单提交 demo.html <!doctype html> <html> <head> <title>表单提交</title> ...

  4. ASP.NET在实际开发中验证码的用法

    在网上有看到很多关于验证码的代码,很多都只是生成一张验证码图片,然而在实际登陆验证模块,验证码要怎么添加进去或者说怎么运用.和实际项目开发中要怎么使用验证码,我自己总结了几点. 一.在实际开发登陆模块 ...

  5. Jq自定义动画

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. C++中如何split字符串(转)

    #include <iostream> #include <sstream> #include <string> using namespace std; int ...

  7. Spring 注入数据源

    一.在项目中添加dataSource所用到的包 dbcp数据源所需包:     commons-dbcp.jar     commons-pool.jar C3P0数据源所需包:     c3p0-0 ...

  8. RTUILabel+正则表达式

    RTLabel和RegexKitLite都要导入第三方库 使用Regexkitlite库进行正则表达式的解析 1.库是使用MRR,如果在ARC工程里面使用这个类,必须在project->buil ...

  9. C#制作简易屏保(转)

    C#制作简易屏保[原创] 原始网址: http://www.cnblogs.com/drizzlecrj/archive/2006/10/06/522182.html 2006-10-06 16:25 ...

  10. c++ iostream 相关使用

    索引: C++的iostream标准库介绍+使用详解(转) iostream格式化输出 c++ 字符串流 sstream(常用于格式转换) 关于#include <iomanip>中iom ...