作者:刘昊昱

博客:http://blog.csdn.net/liuhaoyutz

本文中我们通过一个例子来看AlertDialog对话框的实现,其运行效果如下:

主布局文件main.xml内容如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp"
android:text="对话框应用示例:" />" <Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按钮对话框" /> <Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="列表对话框" /> <Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="单选列表对话框" /> <Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="多选列表对话框" /> </LinearLayout>

布局文件中只是简单的放置了4个按钮。

下面看主Activity文件,其内容如下:

package com.liuhaoyu;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast; public class MainActivity extends Activity {
private boolean[] checkedItems; /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog alert = new AlertDialog.Builder(MainActivity.this).create();
alert.setIcon(R.drawable.image01);
alert.setTitle("按钮对话框:");
alert.setMessage("带按钮的对话框!");
alert.setButton(DialogInterface.BUTTON_NEGATIVE,"取消", new OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "您单击了取消按钮",
Toast.LENGTH_SHORT).show(); }
});
alert.setButton(DialogInterface.BUTTON_POSITIVE,"确定", new OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "您单击了确定按钮",
Toast.LENGTH_SHORT).show(); }
});
alert.setButton(DialogInterface.BUTTON_NEUTRAL,"中立",new OnClickListener(){ @Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "您单击了中立按钮",
Toast.LENGTH_SHORT).show();
}
});
alert.show();
}
}); Button button2 = (Button) findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
final String[] items = new String[] { "苹果", "三星", "HTC", "联想", "小米" };
Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.image01);
builder.setTitle("请选择手机品牌:");
builder.setItems(items, new OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,
"您选择了" + items[which], Toast.LENGTH_SHORT).show(); }
});
builder.create().show();
}
}); Button button3 = (Button) findViewById(R.id.button3);
button3.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
final String[] items = new String[] { "苹果", "三星", "HTC", "联想", "小米" };
Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.image01);
builder.setTitle("请选择手机品牌:");
builder.setSingleChoiceItems(items, 0, new OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,
"您选择了" + items[which], Toast.LENGTH_SHORT).show(); }
}); builder.setPositiveButton("确定", null);
builder.create().show();
}
}); Button button4 = (Button) findViewById(R.id.button4);
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
checkedItems= new boolean[] { false, true, false,true, false };
final String[] items = new String[] { "苹果", "三星", "HTC", "联想", "小米" };
Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.image01);
builder.setTitle("请选择手机品牌:");
builder.setMultiChoiceItems(items, checkedItems,
new OnMultiChoiceClickListener() { @Override
public void onClick(DialogInterface dialog,
int which, boolean isChecked) {
checkedItems[which]=isChecked;
}
});
builder.setPositiveButton("确定", new OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
String result="";
for(int i=0;i<checkedItems.length;i++){
if(checkedItems[i]){
result+=items[i]+"、";
}
} if(!"".equals(result)){
result=result.substring(0, result.length()-1);
Toast.makeText(MainActivity.this, "您选择了[ "+result+" ]", Toast.LENGTH_LONG).show();
}
}
});
builder.create().show();
}
});
}
}

程序中为4个按钮设置了点击监听器,在监听器中创建了4种不同的对话框。

Android应用开发学习之AlertDialog对话框的更多相关文章

  1. Android应用开发学习之表格视图

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 本文我们来学习一个使用表格视图的程序,下图是该程序的运行效果: 该程序主Activity文件内容如下: packag ...

  2. 2021年正确的Android逆向开发学习之路

    2021年正确的Android逆向开发学习之路 说明 文章首发于HURUWO的博客小站,本平台做同步备份发布.如有浏览或访问异常或者相关疑问可前往原博客下评论浏览. 原文链接 2021年正确的Andr ...

  3. Android学习:AlertDialog对话框

    AlertDialog可以生成各种内容的对话框,它生成的对话框包含4个区域:图标区,标题区,内容区,按钮区 <?xml version="1.0" encoding=&quo ...

  4. Android开发学习笔记-自定义对话框

    系统默认的对话框只能显示简单的标题内容以及按钮,而如果想要多现实其他内容则就需要自定义对话框,下面是自定义对话框的方法. 1.先定义对话框的模版 <?xml version="1.0& ...

  5. Android开发学习笔记-显示对话框

    private void ShowUpdateDialog() { Log.i("version", "shengji"); AlertDialog.Build ...

  6. Android应用开发学习笔记之播放音频

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Android支持常用音视频格式文件的播放,本文我们来学习怎样开发Android应用程序对音视频进行操作. Andr ...

  7. android移动开发学习笔记(二)神奇的Web API

    本次分两个大方向去讲解Web Api,1.如何实现Web Api?2.如何Android端如何调用Web Api?对于Web Api是什么?有什么优缺点?为什么用WebApi而不用Webservice ...

  8. Android应用开发学习笔记之事件处理

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Android提供的事件处理机制分为两类:一是基于监听的事件处理:二是基于回调的事件处理.对于基于监听的事件处理,主 ...

  9. Android 系统开发学习杂记(转)

    http://blog.csdn.net/shagoo/article/details/6709430 > 开发环境1.安装 Eclipse 和 android-sdk 并解压安装2.Eclip ...

随机推荐

  1. Hibernate的几种查询方式-HQL,QBC,QBE,离线查询,复合查询,分页查询

    HQL查询方式 这一种我最常用,也是最喜欢用的,因为它写起来灵活直观,而且与所熟悉的SQL的语法差不太多.条件查询.分页查询.连接查询.嵌套查询,写起来与SQL语法基本一致,唯一不同的就是把表名换成了 ...

  2. iphone真机开发流程之--证书申请

    一.申请 1.进入ios开发者中心 http://www.apple.com.cn/developer/ios/index.html 2.点击登录 输入用户名和密码(前提:已经有Apple ID,且花 ...

  3. Android Support库百分比布局

    之前写过一篇屏幕适配的文章Android 屏幕适配最佳实践,里面提到了类似百分比布局的东西,可是该方法缺点非常明显,就会添加非常多没用的数据,导致apk包变大. 而谷歌的support库中,添加了一个 ...

  4. [置顶] iOS 应用程序内部国际化,不跟随系统语言

    前言:网络上关于iOS国际化的文章很多,但基本上都是基于跟随系统语言的国际化,笔者就不赘述了-0 – 今天要讲的是不跟随系统的切换语言版本方案,即程序内部的切换语言版本方案. 一.总则: 应用内部语言 ...

  5. Sonar入门(四):Eclipse集成Sonar

    sonar及其插件在项目中的使用方法 Sonar平台 Sonar平台的安装见一文, 在Sonar平台上进行的检查可以通过hudson进行触发, A. 没有做持续集成的项目可以复制以下hudson上的任 ...

  6. 住javaWeb分页实现(模拟百度首页)

    本文来源于 http://blog.csdn.net/tjpu_lin/article/details/41050475 近期在开发一个项目,项目中有非常多数据展示的模块.所以要用到分页,网上搜了非常 ...

  7. Sftp和ftp 差别、工作原理等(汇总ing)

    Sftp和ftp over ssh2的差别 近期使用SecureFx,涉及了两个不同的安全文件传输协议: -sftp -ftp over SSH2 这两种协议是不同的.sftp是ssh内含的协议,仅仅 ...

  8. 基于akka实现简单的主从框架

    ========================Master============================== package com.scala.akka.rpc.demo2 import ...

  9. linq读书笔记1-linq 初步

    至于linq是什么之类的已经有过太多的文章介绍,亦不清楚的胡朋友可以自己搜索一下便可以得到大量的答案 为了体验linq究竟能带给我们什么体验,我们直接从代码入手: string[] words = n ...

  10. 数据库分库分表(sharding)系列(四) 多数据源的事务处理

    系统经sharding改造之后,原来单一的数据库会演变成多个数据库,如何确保多数据源同时操作的原子性和一致性是不得不考虑的一个问题.总体上看,目前对于一个分布式系统的事务处理有三种方式:分布式事务.基 ...