软件工程日报八——AlertDiatog的使用
今天学习了AlertDiatog的相关内容
AlertDialog可以在当前的界面上显示一个对话框,这个对话框是置顶于所有界面元素之上的,能够屏蔽掉其他控件的交互能力,因此AlertDialog一般是用于提示一些非常重要的内容或者警告信息。
创建AlertDialog
创建一个AlertDialog对话框的步骤
1.调用AlertDialog的静态内部类Builder创建AlertDialog.Builder的对象。
2.调用AlertDialog.Builder的setTitile()和setlcon()的方法分别设置AlertDialog对话框的标题名称和图标。
3.调用AlertDialog.Builder的setMessage()、setSingChoiceitems()或者setMultiChoiceitems()方法设置AlertDialog对话框的内容为简单文本、单选列表或者多选列表。
4.调用AlertDialog.Builder的setPositiveButton()、setNegativeButton()方法设置AlertDialog对话框的确定和取消按钮。
5.调用AlertDialog.Builder的create()方法创建AlertDialog对象。
6.调用AlertDialog.Builder的show()方法显示该对话框。
7.调用AlertDialog.Builder的dismiss()方法显示取消该对话框
举例
activity_main.xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity"> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="爱好:"></TextView> <CheckBox
android:id="@+id/cb1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="游泳"> </CheckBox> <CheckBox
android:id="@+id/cb2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="旅游"> </CheckBox> <CheckBox
android:id="@+id/cb3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="爬山"> </CheckBox>
</LinearLayout> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="myclick"
android:text="退出"> </Button> </LinearLayout>
Mainactivity文件
package com.example.test; import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity; import android.app.DatePickerDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Toast; public class MainActivity extends AppCompatActivity { private CheckBox cb1,cb2,cb3;
private String msg1,msg2,msg3;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cb1=findViewById(R.id.cb1);
cb2=findViewById(R.id.cb2);
cb3=findViewById(R.id.cb3);
//一个监听器
CompoundButton.OnCheckedChangeListener occl=new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(buttonView.getId()==R.id.cb1)
{
if(isChecked)
{
msg1="游泳";
}else {
msg1=null;
}
}
if(buttonView.getId()==R.id.cb2)
{
if(isChecked)
{
msg2="旅游";
}else {
msg2=null;
}
}
if(buttonView.getId()==R.id.cb3)
{
if(isChecked)
{
msg3="爬山";
}else {
msg3=null;
}
}
Toast.makeText(MainActivity.this,msg1+msg2+msg3,Toast.LENGTH_SHORT).show();
}
};
cb1.setOnCheckedChangeListener(occl);
cb2.setOnCheckedChangeListener(occl);
cb3.setOnCheckedChangeListener(occl); }
public void myclick(View view)
{
/*
1.普通对话框
创建对话框builder对象,该对象用于构建一个对话框的模板
builder 对象,调用creat()方法创建一个对话框对象,次对象调用show()方法进行运行
*/
AlertDialog.Builder builder=new AlertDialog.Builder(this);
//构建对话框
builder.setIcon(R.mipmap.ic_launcher);
builder.setTitle("退出!");
builder.setMessage("确定要退出吗?");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//关闭对话框
dialog.dismiss();
//关闭app
MainActivity.this.finish(); }
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog adialog=builder.create();
adialog.show(); } }
运行结果如下

AlertDialog的三种方法
1.普通对话框
public void myclick(View view)
{
/*
1.普通对话框
创建对话框builder对象,该对象用于构建一个对话框的模板
builder 对象,调用creat()方法创建一个对话框对象,次对象调用show()方法进行运行
*/
AlertDialog.Builder builder=new AlertDialog.Builder(this);
//构建对话框
builder.setIcon(R.mipmap.ic_launcher);
builder.setTitle("退出!");
builder.setMessage("确定要退出吗?");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//关闭对话框
dialog.dismiss();
//关闭app
MainActivity.this.finish(); }
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog adialog=builder.create();
adialog.show(); }
这是最基础的一种对话框,主要适用于退出应用时,选择确定还是取消过程
二、单选对话框
单选对话框的代码如下
package com.example.test; import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity; import android.app.DatePickerDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.Toast; public class MainActivity extends AppCompatActivity { private CheckBox cb1,cb2,cb3;
private String msg1,msg2,msg3;
private TextView text1;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cb1=findViewById(R.id.cb1);
cb2=findViewById(R.id.cb2);
cb3=findViewById(R.id.cb3);
text1=findViewById(R.id.text1);
//一个监听器
CompoundButton.OnCheckedChangeListener occl=new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(buttonView.getId()==R.id.cb1)
{
if(isChecked)
{
msg1="游泳";
}else {
msg1=null;
}
}
if(buttonView.getId()==R.id.cb2)
{
if(isChecked)
{
msg2="旅游";
}else {
msg2=null;
}
}
if(buttonView.getId()==R.id.cb3)
{
if(isChecked)
{
msg3="爬山";
}else {
msg3=null;
}
}
Toast.makeText(MainActivity.this,msg1+msg2+msg3,Toast.LENGTH_SHORT).show();
}
};
cb1.setOnCheckedChangeListener(occl);
cb2.setOnCheckedChangeListener(occl);
cb3.setOnCheckedChangeListener(occl); }
public void myclick(View view)
{
/*
1.普通对话框
创建对话框builder对象,该对象用于构建一个对话框的模板
builder 对象,调用creat()方法创建一个对话框对象,次对象调用show()方法进行运行
*/
AlertDialog.Builder builder=new AlertDialog.Builder(this);
//构建对话框
builder.setIcon(R.mipmap.ic_launcher);
builder.setTitle("退出!");
builder.setMessage("确定要退出吗?");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//关闭对话框
dialog.dismiss();
//关闭app
MainActivity.this.finish(); }
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog adialog=builder.create();
adialog.show(); }
int index=0;
public void click(View view)
{
//2.单选对话框
AlertDialog.Builder builder=new AlertDialog.Builder(this);
String [] showMsg=new String []{"小号","中号","大号","超大号"};
int []textSize=new int[]{10,20,30,40};
//构建对话框
builder.setIcon(R.mipmap.ic_launcher)
.setTitle("修改文本大小")
.setSingleChoiceItems(showMsg, index, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
index=which;
}
})
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
text1.setTextSize(textSize[index]);
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog adialog=builder.create();
adialog.show();
} }
通过事件监听器来判断字体的大小,通过text1.setTextSize(textSize[index]),进行调用,从而实现文字大小的修改
运行结果如下


三、多选对话框
代码如下
public void click(View view)
{
//2.多选对话框
AlertDialog.Builder builder=new AlertDialog.Builder(this);
String [] showMsg=new String[]{"旅游","游泳","爬山","读书"};
boolean[] isCheck=new boolean[]{true,false,false,false};
//构建对话框
builder.setIcon(R.mipmap.ic_launcher)
.setTitle("修改文本大小")
.setMultiChoiceItems(showMsg, isCheck, new DialogInterface.OnMultiChoiceClickListener() {
@Override
//which 选中哪一项,返回哪一项的索引,isChecked返回选择项的状态,true false
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
isCheck[which]=isChecked;
}
}) .setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
StringBuffer sb=new StringBuffer();
for(int i=0;i<isCheck.length;i++)
{
if(isCheck[i]==true)
{
sb.append(showMsg[i]).append("***");
}
}
Toast.makeText(MainActivity.this,sb,Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog adialog=builder.create();
adialog.show();
}
多选对话框与单选对话框不同的是,引用了一个boolean函数,通过boolean函数来判断选项是否被选择,再利用for循环,根据true或false来进行取值
运行结果如下

今天的AlertDialog选择框的学习就到这里
软件工程日报八——AlertDiatog的使用的更多相关文章
- 2017年软件工程第八次作业-每周PSP例行报告
1.PSP表格 2.进度条 3.博文字数累积折线图 4.代码行数累积折线图 5.PSP饼图
- 2017年软件工程第八次作业-互评Alpha版本
B.Thunder——爱阅app(测评人:方铭) 一.基于NABCD评论作品,及改进建议 每个小组评论其他小组Alpha发布的作品:1.根据(不限于)NABCD评论作品的选题:2.评论作品对选题的实现 ...
- 软件工程第八周PSP
1.本周PSP 2.本周进度条 代码行数 0 博文字数 356 知识点 无 3.时间分配饼状图 4.折线图
- 给工程师的 10 条哲理(浅薄者迷信运气,强者相信因果,软件复制成本为零,文凭不重要,AWS使得创业成本为零,每个手机都是口袋里的强大电脑)
无论是主题分布式数据库,微服务,Soylent,尤伯杯,或者矮人要塞,我们试图从物质分离出来炒作,推迟叙事的客人.与尊重有软件工程日报的社论部分客观性. 一位渠道的成员说,“当软件工程每日的意见公布, ...
- 30K iOS程序员的简述:如何快速进阶成为高级开发人员
前言: 本篇文章适用于所有在这个行业已经有了几年时间后想要在职业生涯中取得突破的开发人员,编程人员和程序员(或者你可能刚刚开始,但希望你能看到你的路径) 本文适合那些有着简单愿望的人:你想成为一名高级 ...
- 结对项目之对PIE的测试程序
项目要求: 构造程序,分别是: 不能触发Fault. 触发Fault,但是不能触发Error. 触发Error,但是不能产生Failure. 结对对象:陈秋月 学号:2013110404 博客地址 ...
- 结对编程学习fault、error、failure三种状态
点滴成就 学习时间 新编写代码行数 博客量(篇) 学习知识点 第一周 10小时 0 0 了解软件工程 第二周 10小时 0 1 项目开题 第三周 15小时 0 1 开通博客.开展项目调查 第四周 20 ...
- 软件工程(FZU2015)赛季得分榜,第八回合
目录 第一回合 第二回合 第三回合 第四回合 第五回合 第6回合 第7回合 第8回合 第9回合 第10回合 第11回合 积分规则 积分制: 作业为10分制,练习为3分制:alpha30分: 团队项目分 ...
- 软件工程(FZU2015) 赛季得分榜,第八回合
SE_FZU目录:1 2 3 4 5 6 7 8 9 10 11 12 13 积分规则 积分制: 作业为10分制,练习为3分制:alpha30分: 团队项目分=团队得分+个人贡献分 个人贡献分: 个人 ...
- 软件工程-东北师大站-第八次作业(PSP)
1.本周PSP 2.本周进度条 3.本周累计进度图 代码累计折线图 博文字数累计折线图 4.本周PSP饼状图
随机推荐
- jmeter做性能测试
一.线程与进程 一个软件/程序,是以进程的方式存在的,一个进程可含多个线程(一个软件可以做多个事情,就是基于线程而实现的) 二.并发的基本概念 并发: 并发用户数:同一时刻,服务器/接口接收到的用户量 ...
- Fiegn 声明式接口调用
五:Fiegn 声明式接口调用 什么是Fiegn Netfix,Fiegn 是一个提供模板式的Web Service客户端,使用Fiegn 可以简化Web Service 客户端的编写,开发者可以通过 ...
- Technique to Read Source Code
Technique to Read Source Code Excerpted from http://ruby-hacking-guide.github.io/intro.htm Any progr ...
- js原型链污染详解
前言 之前打某湖论剑,两道js的题,给我整懵逼了,发现以前都没对js做过多少研究,趁着被毒打了,先研究一波js原型链,未雨绸缪. 基础 protype 首先我们研究js原型链,得搞明白原型是什么,这里 ...
- 【译】.NET 7 中的性能改进(九)
原文 | Stephen Toub 翻译 | 郑子铭 原始类型和数值 (Primitive Types and Numerics) 我们已经看过了代码生成和GC,线程和矢量化,互操作......让我们 ...
- LeetCode-1220 统计元音字母序列的数目
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/count-vowels-permutation 题目描述 给你一个整数 n,请你帮忙统计一下我们 ...
- svn拉取出现目标机器积极拒绝,无法连接
问题如图: 前言 这边服务器环境上的SVN仓库地址不能连接,不能提交代码和下载代码了,错误内容就是"由于目标计算机积极拒绝,无法连接.." 出错的原因 询问了相关的事项,知道了这次 ...
- []Linux 离线升级Openssh与Openssl版本
https://blog.csdn.net/qq_45728838/article/details/120825845 离线的意思是为Linux无法链接网络,只能通过windows 将文件上传一.首先 ...
- llinux防火墙设置远程连接
#停止防火墙systemctl stop firewalld #查看防火墙是否运行systemctl status firewalld# 防火墙设置允许firewall-cmd --add-port= ...
- '大龄‘后端程序员,快速捡起ECMAScript6
1.Promise 2.迭代器 3.async 4.module 5. this的理解