【Android学习笔记】自定义AlertDialog对话框

来源:互联网 发布:软件编程工具 编辑:程序博客网 时间:2024/05/21 10:35


(1)布局文件:

<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_alignParentLeft="true"        android:layout_alignParentTop="true"        android:layout_marginLeft="70dp"        android:layout_marginTop="62dp"        android:text="警告对话框" />    <Button        android:id="@+id/button2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignLeft="@+id/button1"        android:layout_below="@+id/button1"        android:layout_marginTop="64dp"        android:text="多选对话框" />    <Button        android:id="@+id/button3"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignLeft="@+id/button2"        android:layout_below="@+id/button2"        android:layout_marginTop="60dp"        android:text="单选对话框" /></RelativeLayout>

(2)类的文件:

package com.example.alertdialog;import android.os.Bundle;import android.app.Activity;import android.app.AlertDialog;import android.app.AlertDialog.Builder;import android.content.DialogInterface;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;/** * 警告对话框的使用 *  * @author piaodangdehun *  */public class MainActivity extends Activity {private Button button1;// 警告对话框private Button button2;// 多选对话框private Button button3;// 单选对话框private AlertDialog.Builder builder; // 为button1设定的对话框,当有一个对话框的时候可以使用全局的定义@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button1 = (Button) this.findViewById(R.id.button1);button2 = (Button) this.findViewById(R.id.button2);button3 = (Button) this.findViewById(R.id.button3);/* * 1.警告对话框的设定 */builder = new AlertDialog.Builder(this);builder.setTitle("提示框");builder.setMessage("你确定要删除吗?");builder.setIcon(R.drawable.ic_launcher); // 设置图片/* * 确定对话框 */builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "确认删除", 1).show();}});/* * 取消对话框 */builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "取消删除", 1).show();}});/* * 忽略对话框 */builder.setNeutralButton("忽略", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "忽略删除", 1).show();}});button1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {builder.show();}});/* * 2.多选对话框 * 当有多个对话框的时候在具体的时间内不进行声明定义 */button2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {/* * 对话框的创建 */AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setTitle("请选择爱好");final String[] hobby = { "上网", "打游戏", "聊天" };/* * 选择的列表 */builder.setMultiChoiceItems(hobby, new boolean[] { true, false,false },new DialogInterface.OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which, boolean isChecked) {if (isChecked) {Toast.makeText(MainActivity.this,"-->>" + hobby[which], 1).show();}}});/* * 取消按钮 */builder.setPositiveButton("确定",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {}});builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {}});builder.show();}});/* * 3.单选对话框的设定 */button3.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubAlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);builder.setTitle("XX");builder.setSingleChoiceItems(new String[]{"上网", "打游戏", "聊天"}, -1, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});builder.show();}});}/* * private final View.OnClickListener mylistenerClickListener = new * OnClickListener() { *  * @Override public void onClick(View v) { // TODO Auto-generated method * stub *  * } }; */@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

注意:使用完dialog之后要关闭:

<strong>private AlertDialog dialog;dialog = builder.show();dialog.dismiss();</strong>
并且如果要关闭activity的话一定要在关闭activity之前关闭dialog!

不然会报错!

(3)结果展示



1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 熬夜肾虚怎么办才能好 经常熬夜口气重怎么办 晚上睡不着白天起不来怎么办 晚上熬夜白天睡不着怎么办 在外打工孩子上学怎么办 婴儿脸干燥发红怎么办 宝宝脸上红点点怎么办 药流出血量少怎么办 药流喝药第一天发烧了怎么办 药流第一天量很少怎么办 小孩不想吃饭口臭怎么办 晚上上班白天睡不着怎么办 新车刮漆了怎么办 药流出血多怎么办 药流第二天没血怎么办 有异味怎么办%3f 养狗后悔了怎么办 买狗后悔了怎么办 小孩子不想去幼儿园怎么办 小孩子不想上幼儿园怎么办 想当兵视力不够怎么办 当兵裸眼视力差怎么办 去公司报道行李怎么办 报道第一天出糗怎么办 痛经一直想拉屎怎么办 月经第一天痛经怎么办 痛经痛得厉害怎么办 脑子里老是幻想怎么办 绿松石盘玩变黑怎么办 绿松石发乌了怎么办 泡脚泡的脚发黑怎么办 想当兵有纹身怎么办 小孩挨打不会还手怎么办 孩子挨打不敢还手怎么办 武警森林改革新兵怎么办 森林武警新兵后来怎么办 部队训练打死人怎么办? 部队受伤退伍后怎么办 60岁失地养老怎么办 梦遗到被子上怎么办 血管打针打的硬怎么办