软件工程日报八——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饼状图
随机推荐
- 如何通过C#/VB.NET代码在Word中更改字体颜色
在日常工作中,我们有时会需要修改字体的颜色来突出文本重点,让读者更容易抓住文章要点.在今天这篇文章中,我将为大家介绍如何以编程方式,在Word更改字体颜色.本文将分为两部分分别介绍如何实现此操作.以下 ...
- 浏览界面servlet实现
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- HGAME_2023_WEB_WP_WEEK3
Ping to the host 很明显的rce,简单测试一下发现空格,cat,:被办,且执行无回显,空格用${IFS},%09,$IFS$9等等来绕过,我们利用dnslog将执行结果外带出来,这里使 ...
- Cesium给3dtileset中的每个瓦片添加一个billboard/label(六)
2023-01-14 改了下思路,直接根据点击的位置转换为世界坐标系再添加label console.log(`鼠标点击位置为:${click.position}`); var cartesian = ...
- JZOJ 1389. 玩诈欺的小杉
思路 考虑一个点要不要翻,如果它左边的点为 \(1\),那么它必须翻 所以我们可以从左往右一列一列地翻 先枚举第 \(0\) 列的状态 然后之后的列就确定了 判断一下最后一列是不是 \(0\) 就行了 ...
- C# 时间各种格式
1.1 取当前年月日时分秒 currentTime=System.DateTime.Now; 1.2 取当前年 int 年=currentTime.Year; 1.3 取当前月 int 月=curre ...
- vue路由中pdfjs插件使用及找不到 viewer.html解决
官方下载: https://mozilla.github.io/pdf.js/getting_started/#download 同目录下pdfjs-2.12.313-dist.zip为官方下载包 此 ...
- vue .sync的理解
假如父组件传给子组件的值,子组件接受之后,想要改变父组件传过来的值,就可以使用sync .sync是vue中用于实现简单的"双向绑定"的语法糖,在平时的开发中是非常使用的. vue ...
- 01#Vue Transition 过渡:基于 CSS 过渡
过渡的阶段 上图是过渡的 6 个阶段示意图.总体是进入和离开两个阶段,进入和离开又各自有两个阶段.下表格是对每一个阶段的解释: 进入和离开实现过渡效果使用的是 CSS 样式,过度的样式相当于重写覆盖了 ...
- Linux如何查看实时滚动日志
Linux有多种方法可以查看实时滚动日志.最常用的方法是使用tail命令,它可以显示一个文件的最后几行,并且可以跟踪文件的变化.例如,你可以输入tail -f /var/log/syslog来查看系统 ...