• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android--Dialog对话框

Android--Dialog对话框

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了对话框,对话框图片,对话框素材,cad保存不弹出对话框,微信对话框等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android--Dialog对话框


在Android开发当中,在界面上弹出一个Dialog对话框使我们经常需要做的,本篇做一下记录,以备遗忘时查询。

dialog就是一个在屏幕上弹出一个可以让用户做出一个选择,或者输入额外的信息的对话框,一个对话框并不会沾满我们整个的屏幕,并且通常用于模型事件当中需要用户做出一个决定后才会继续执行。

Dialog类是dialog对话框的基类,但是我们应该避免直接使用这个类来实例化一个dialog对话框,我们应当使用其子类来得到一个对话框:

java.lang.Object
        android.app.Dialog

Known Direct Subclasses
AlertDialog, CharacterPickerDialog, MediaRouteChooserDialog, MediaRouteControllerDialog, Presentation

Known Indirect Subclasses
DatePickerDialog, ProgressDialog, TimePickerDialog

我们看到,Dialog有很多的子类实现,所以我们要定义一个对话框,使用其子类来实例化一个即可,而不要直接使用Dialog这个父类来构造。

我们看到,AlertDialog是Dialog的一个直接子类。

使用AlertDialog,我们可以显示一个标题,最多3个按钮操作,以及一组选择框或者是自己定义的弹出框。

在AlertDialog中,定义按钮都是通过 setXXXButton 方法来完成,其中一共有3种不同的Action Buttons供我们选择:

 

1.setPositiveButton(CharSequence text, DialogInterface.OnClickListener listener)
这是一个相当于OK、确定操作的按钮,

2.setNegativeButton (CharSequence text, DialogInterface.OnClickListener listener)
这是一个相当于取消操作的按钮。

3. setNeutralButton (CharSequence text, DialogInterface.OnClickListener listener)
这个是相当于一个忽略操作的按钮。

 

我们每一种action buttons最多只能出现一个,即弹出对话框最多只能出现一个PositiveButton。

接下来我们通过一个一个的具体实例来看看我们常用的几种AlertDialog对话框。

1.弹出一个警告框,并有三个按钮可选择

\

我们来看看代码部分:

button.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                //    通过AlertDialog.Builder这个类来实例化我们的一个AlertDialog的对象
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                //    设置Title的图标
                builder.setIcon(R.drawable.ic_launcher);
                //    设置Title的内容
                builder.setTitle("弹出警告框");
                //    设置Content来显示一个信息
                builder.setMessage("确定删除吗?");
                //    设置一个PositiveButton
                builder.setPositiveButton("确定", new DialogInterface.OnClickListener()
                {
                    @Override
                    public void onClick(DialogInterface dialog, int which)
                    {
                        Toast.makeText(MainActivity.this, "positive: " + which, Toast.LENGTH_SHORT).show();
                    }
                });
                //    设置一个NegativeButton
                builder.setNegativeButton("取消", new DialogInterface.OnClickListener()
                {
                    @Override
                    public void onClick(DialogInterface dialog, int which)
                    {
                        Toast.makeText(MainActivity.this, "negative: " + which, Toast.LENGTH_SHORT).show();
                    }
                });
                //    设置一个NeutralButton
                builder.setNeutralButton("忽略", new DialogInterface.OnClickListener()
                {
                    @Override
                    public void onClick(DialogInterface dialog, int which)
                    {
                        Toast.makeText(MainActivity.this, "neutral: " + which, Toast.LENGTH_SHORT).show();
                    }
                });
                //    显示出该对话框
                builder.show();
            }
        });

我们如果要创建一个AlertDialog对话框,需要使用AlertDialog的一个内部类,即AlertDialog.Builder来构建一个AlertDialog的对话框,然后通过setXX方法来设置我们想要显示的内容即可。

我们看到,我们一共设置了3个action buttons,每一个button都为其绑定了一个 DialogInterface.OnClickListener() 的监听事件,然后在里面通过Toast吐司对话框(这个在后面随笔中会讲解)来弹出一下我们的一些信息,which方法表示的是action button所代表的int值:

positive:  -1
negative:  -2
neutral:  -3

我们可以知道,which=-1就表示点击的是确定按钮,-2表示点击的是取消按钮,-3表示点击的是忽略按钮。

\

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
 
public class SingleChoiceItemsTest extends Activity implements OnClickListener
{
    private String[] province = new String[] { "上海", "北京", "湖南", "湖北", "海南" };
    private Button btnSingleChoiceList;
    // 单击事件对象的实例
    private ButtonOnClick buttonOnClick = new ButtonOnClick(1);
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
 
       btnSingleChoiceList = (Button) findViewById(R.id.btnSingleChoice);
       btnSingleChoiceList.setOnClickListener(this);
    }
 
    @Override
    public void onClick(View v)
    {
       showSingleChoiceButton();
    }
 
    // 在单选选项中显示 确定和取消按钮
    //buttonOnClickg变量的数据类型是ButtonOnClick,一个单击事件类
    private void showSingleChoiceButton()
    {
       AlertDialog.Builder builder = new AlertDialog.Builder(this);
       builder.setTitle("请选择省份");
       builder.setSingleChoiceItems(province, 0, buttonOnClick);
       builder.setPositiveButton("确定", buttonOnClick);
       builder.setNegativeButton("取消", buttonOnClick);
       builder.show();
    }
 
    private class ButtonOnClick implements DialogInterface.OnClickListener
    {
      
       private int index; // 表示选项的索引
 
       public ButtonOnClick(int index)
       {
           this.index = index;
       }
 
       @Override
       public void onClick(DialogInterface dialog, int which)
       {
           // which表示单击的按钮索引,所有的选项索引都是大于0,按钮索引都是小于0的。
           if (which >= 0)
           {
              //如果单击的是列表项,将当前列表项的索引保存在index中。
              //如果想单击列表项后关闭对话框,可在此处调用dialog.cancel()
              //或是用dialog.dismiss()方法。
              index = which;
           }
           else
           {
              //用户单击的是【确定】按钮
              if (which == DialogInterface.BUTTON_POSITIVE)
              {
                  //显示用户选择的是第几个列表项。
                  final AlertDialog ad = new AlertDialog.Builder(
                          SingleChoiceItemsTest.this).setMessage(
                          "你选择的地区是:" + index + ":" + province[index]).show();
                  //五秒钟后自动关闭。
                  Handler hander = new Handler();
                  Runnable runnable = new Runnable()
                  {
 
                     @Override
                     public void run()
                     {
                         ad.dismiss();
                     }
                  };
                  hander.postDelayed(runnable, 5 * 1000);
              }
              //用户单击的是【取消】按钮
              else if (which == DialogInterface.BUTTON_NEGATIVE)
              {
                  Toast.makeText(SingleChoiceItemsTest.this, "你没有选择任何东西",
                          Toast.LENGTH_LONG);
              }
           }
       }



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • .5.9 AlertDialog(对话框)详解
  • 用Anko和Kotlin实现Android上的对话框和警告提示(KAD 24),ankokotlin
  • Android仿ios底部弹出框效果,android仿ios底部
  • Android系统默认对话框添加图片,
  • Android对话框,android弹出对话框
  • 悬浮对话框的实现,悬浮对话框实现
  • showSetPwdDialog--自定义对话框,showsetpwddialog--
  • Android新手入门2016(11)--非阻塞对话框AlertDialog
  • Android中Dialog对话框,androiddialog
  • 安卓第五天笔记-对话框,安卓第五天笔记

相关文章

  • 2017-05-26Android 手机卫士11--窗体弹出PopupWindow,11--popupwindow
  • 2017-05-26android开发中fragment获取context,androidfragment
  • 2017-05-26Hello,Android
  • 2017-05-26Android初级教程_获取Android控件的宽和高,初级教程android
  • 2017-05-26[android] post请求接口demo测试代码,androiddemo
  • 2017-05-26仿拉手团购App6--注册界面,仿拉手团购app6--
  • 2017-05-26编译器开发系列--Ocelot语言2.变量引用的消解,编译器--ocelot
  • 2017-05-26Android实现一个自定义相机的界面
  • 2017-05-26热修复-Tinker,修复-tinker
  • 2017-05-26Linux常用命令-50:crontab命令

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Greenplum 由于备master节点故障导致gp无法启动处理
    • PHP的readfile下载大文件时卡住
    • Android 中的mvvm,Androidmvvm
    • 《Android权威编程指南(The Big Nerd Ranch Guide)(第二版)》12.4挑战练习,bignerdranch
    • Android体系结构,android体系结构介绍
    • Handler消息传递机制(一)
    • Android自定义View探索(一)—生命周期,androidview
    • Android(Linux)实时监测串口数据,android实时监测
    • Android的bitmap和优化,androidbitmap
    • android studio我的习惯操作,androidstudio习惯

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有