zoukankan      html  css  js  c++  java
  • android 开发AlertDialog.builder对话框的实现

      AndroidAPI提供了Dialog对话框控件,但google明确指出不建议开发者只是使用Dialog来创建对话框,而应该自定义对话框或者使用API中提供的Dialog的子类,如AlertDialog。接下来记录下AlertDialog的具体使用,供广大初学者学习,也供自己日后查阅。

      首先在资源文件xml中写入一个按钮。

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity" >
    
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:text="警告对话框" />
    
        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/button1"
            android:layout_alignRight="@+id/button1"
            android:layout_below="@+id/button1"
            android:layout_marginTop="17dp"
            android:text="选择" />
    
        <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/button2"
            android:layout_alignRight="@+id/button2"
            android:layout_below="@+id/button2"
            android:layout_marginTop="23dp"
            android:text="单选对话框" />
    
    </RelativeLayout>
    
    •  创建简单提示窗口

      在activity中,声明全局变量AlertDialog窗口对象建造者AlertDialog.Builder builder,并在onCreate方法中实例化这个窗口对象建造者new AlertDialog.Builder(this)。

      API对该对象提供了相当丰富的方法。

      如:builder.setTitile("设置窗口标题");

        bulder.setMessage("设置窗口内容");

        builder.setIcon("设置窗口图标");

        ......

      为窗口创建建造者注册相关按钮:

        “取消”,“确定”,“忽略”等相关按钮,由于是学习当中,按钮的监听事件只是做了简单的吐司处理,在正常开发中是要进行业务逻辑处理的。

        

     1         //通过窗口对象建造者注册“确定”按钮,通过DialogInterface接口注册点击事件
     2         builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
     3             
     4             @Override
     5             public void onClick(DialogInterface dialog, int which) {
     6                 // TODO Auto-generated method stub
     7                 //完成业务逻辑代码的编写
     8                 Toast.makeText(MainActivity.this, "确定删除!", 1).show();
     9             }
    10         });
    11         //通过窗口对象建造者注册“取消”按钮,通过DialogInterface接口注册点击事件
    12         builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
    13             @Override
    14             public void onClick(DialogInterface dialog, int which) {
    15                 // TODO Auto-generated method stub
    16                 Toast.makeText(MainActivity.this, "取消操作!", 1).show();
    17             }
    18         });
    19         //通过窗口对象建造者注册“忽略”按钮,通过DialogInterface接口注册点击事件
    20         builder.setNeutralButton("忽略", new DialogInterface.OnClickListener() {
    21             @Override
    22             public void onClick(DialogInterface dialog, int which) {
    23                 // TODO Auto-generated method stub
    24                 Toast.makeText(MainActivity.this, "忽略操作!", 1).show();
    25             }
    26         });
    27         button.setOnClickListener(new OnClickListener() {
    28             @Override
    29             public void onClick(View view) {
    30                 // TODO Auto-generated method stub
    31 //                Toast.makeText(MainActivity.this, "谁让你点击的?逗", 1).show();
    32                 //窗口构建完毕后,展示窗口
    33                 builder.show();
    34             }
    35         });
    •  创建多选窗口

        通过按钮注册点击事件,在点击事件中,初始化并实例化窗口对象创建者:AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 之后的操作创建简单对话框基本一致。

        

     1         button2.setOnClickListener(new OnClickListener() {
     2             @Override
     3             public void onClick(View v) {
     4                 // TODO Auto-generated method stub
     5                 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
     6                 builder.setTitle("选择爱好");
     7                 final String[] hobby = {"上网","聊天","打游戏"} ;
     8                 builder.setMultiChoiceItems(hobby, new boolean[]{true,false,true}, new DialogInterface.OnMultiChoiceClickListener() {
     9                     @Override
    10                     public void onClick(DialogInterface dialog, int which, boolean isChecked) {
    11                         // TODO Auto-generated method stub
    12                         if(isChecked){
    13                             Toast.makeText(MainActivity.this, "选择---->"+hobby[which], 1).show();
    14                         }else{
    15                             Toast.makeText(MainActivity.this, "取消---->"+hobby[which], 1).show();
    16                         }
    17                     }
    18                 });
    19                 builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
    20                     @Override
    21                     public void onClick(DialogInterface dialog, int which) {
    22                         // TODO Auto-generated method stub
    23                     }
    24                 });
    25                 builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
    26                     @Override
    27                     public void onClick(DialogInterface dialog, int which) {
    28                         // TODO Auto-generated method stub
    29                     }
    30                 });
    31                 //窗口构建完毕后,展示窗口
    32                 builder.show();
    33             }
    34         });
    •  创建单选窗口

        通过按钮注册点击事件,在点击事件中,初始化并实例化窗口对象创建者:AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 之后的操作跟创建多选窗口基本一致。

     1 button3.setOnClickListener(new OnClickListener() {
     2             @Override
     3             public void onClick(View v) {
     4                 // TODO Auto-generated method stub
     5                 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
     6                 builder.setTitle("选择爱好");
     7                 final String[] hobby = {"上网","聊天","打游戏"} ;
     8                 //窗口对象创建者可以放adapter容器
     9 //                builder.setAdapter(adapter, listener);
    10                 //为窗口对象建造者创建供选择的列表,若未选择任何一项,参数是  :  -1
    11                 builder.setSingleChoiceItems(new String[]{"上网","聊天","打游戏"}, 
    12                         -1,new DialogInterface.OnClickListener() {
    13                             @Override
    14                             public void onClick(DialogInterface dialog, int which) {
    15                                 Toast.makeText(MainActivity.this, "您选择了--》"+hobby[which], 1).show();
    16                             }
    17                         });
    18                 //通过窗口对象建造者注册“确定”按钮,通过DialogInterface接口注册点击事件
    19                 builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
    20                     @Override
    21                     public void onClick(DialogInterface dialog, int which) {
    22                         
    23                     }
    24                 });
    25                 //通过窗口对象建造者注册“忽略”按钮,通过DialogInterface接口注册点击事件
    26                 builder.setNeutralButton("忽略", new DialogInterface.OnClickListener() {
    27                     @Override
    28                     public void onClick(DialogInterface dialog, int which) {
    29                     
    30                     }
    31                 });
    32                 //通过窗口对象建造者注册“取消”按钮,通过DialogInterface接口注册点击事件
    33                 builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
    34                     @Override
    35                     public void onClick(DialogInterface dialog, int which) {
    36                         
    37                     }
    38                 });
    39                 //窗口完毕后,对窗口进行展示
    40                 builder.show();
    41             }
    42         });

     

  • 相关阅读:
    C语言第一天
    【PHP学习笔记】Hello,World!
    Photoshop文本位置范围
    快捷套取单色图片
    cesium加载纽约市3dtiles模型
    Python基础——0前言
    Python基础——1基础
    Python基础——2函数
    Python基础——3特性
    Python基础——4高阶函数
  • 原文地址:https://www.cnblogs.com/HEWU10/p/4341710.html
Copyright © 2011-2022 走看看