今天学习了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的使用的更多相关文章

  1. 2017年软件工程第八次作业-每周PSP例行报告

    1.PSP表格 2.进度条 3.博文字数累积折线图 4.代码行数累积折线图 5.PSP饼图

  2. 2017年软件工程第八次作业-互评Alpha版本

    B.Thunder——爱阅app(测评人:方铭) 一.基于NABCD评论作品,及改进建议 每个小组评论其他小组Alpha发布的作品:1.根据(不限于)NABCD评论作品的选题:2.评论作品对选题的实现 ...

  3. 软件工程第八周PSP

    1.本周PSP 2.本周进度条 代码行数 0 博文字数 356 知识点 无 3.时间分配饼状图 4.折线图

  4. 给工程师的 10 条哲理(浅薄者迷信运气,强者相信因果,软件复制成本为零,文凭不重要,AWS使得创业成本为零,每个手机都是口袋里的强大电脑)

    无论是主题分布式数据库,微服务,Soylent,尤伯杯,或者矮人要塞,我们试图从物质分离出来炒作,推迟叙事的客人.与尊重有软件工程日报的社论部分客观性. 一位渠道的成员说,“当软件工程每日的意见公布, ...

  5. 30K iOS程序员的简述:如何快速进阶成为高级开发人员

    前言: 本篇文章适用于所有在这个行业已经有了几年时间后想要在职业生涯中取得突破的开发人员,编程人员和程序员(或者你可能刚刚开始,但希望你能看到你的路径) 本文适合那些有着简单愿望的人:你想成为一名高级 ...

  6. 结对项目之对PIE的测试程序

    项目要求: 构造程序,分别是: 不能触发Fault. 触发Fault,但是不能触发Error. 触发Error,但是不能产生Failure. 结对对象:陈秋月  学号:2013110404  博客地址 ...

  7. 结对编程学习fault、error、failure三种状态

    点滴成就 学习时间 新编写代码行数 博客量(篇) 学习知识点 第一周 10小时 0 0 了解软件工程 第二周 10小时 0 1 项目开题 第三周 15小时 0 1 开通博客.开展项目调查 第四周 20 ...

  8. 软件工程(FZU2015)赛季得分榜,第八回合

    目录 第一回合 第二回合 第三回合 第四回合 第五回合 第6回合 第7回合 第8回合 第9回合 第10回合 第11回合 积分规则 积分制: 作业为10分制,练习为3分制:alpha30分: 团队项目分 ...

  9. 软件工程(FZU2015) 赛季得分榜,第八回合

    SE_FZU目录:1 2 3 4 5 6 7 8 9 10 11 12 13 积分规则 积分制: 作业为10分制,练习为3分制:alpha30分: 团队项目分=团队得分+个人贡献分 个人贡献分: 个人 ...

  10. 软件工程-东北师大站-第八次作业(PSP)

    1.本周PSP 2.本周进度条 3.本周累计进度图 代码累计折线图 博文字数累计折线图 4.本周PSP饼状图

随机推荐

  1. vs2019编写代码时的光标变成了黑块,选中字时替换掉了黑块选中的字的解决方法

    这是由于不小心按到了Insert键 解决方法:再按一下Insert就好了. 因为插入键(insert)是一个状态表示键 当你按倒它时,它会进入一个覆盖模式,在光标位置新输入字会替代原来的字:另一种为插 ...

  2. STM32F0库函数初始化系列:ADC

    static void ADC_Config(void) { ADC_InitTypeDef ADC_InitStructure; /* ADCs DeInit */ //ADC_DeInit(ADC ...

  3. 样本熵(SampEn)的C/C++代码实现与优化

    正文 本文不介绍什么是样本熵,具体推荐看此文https://blog.csdn.net/Cratial/article/details/79742363,写的很好,里面的示例也被我拿来测试代码写的对不 ...

  4. Rainbond ubuntu20.04单主机(allinone)部署及简单应用构建

    1.Rainbond是什么? Rainbond 是一个云原生应用管理平台,使用简单,不需要懂容器.Kubernetes和底层复杂技术,支持管理多个Kubernetes集群,和管理企业应用全生命周期. ...

  5. 六:spring Cloud

    六Spring Cloud 回顾之前的: javaSE 数据库 前端 Servlet HTTP Mybatis Spring SpringMVC SpringBoot Dubbo.Zookeeper. ...

  6. 国外的SRE都是干啥工作的?薪资如何?

    本文翻译自:https://www.flagship.io/glossary/site-reliability-engineer/,意译~ 众所周知,开发和 IT 运营之间因为屁股决定脑袋,存在巨大的 ...

  7. 轻量级CI/CD发布部署环境搭建及使用_01_基本介绍

    轻量级CI/CD发布部署环境搭建及使用_01_基本介绍 授人以鱼不如授人以渔,如果说的别人都没明白,说明自己实际也不是太明白 最终实现效果如图 1,选择相应环境下的项目,执行构建 注: web:vue ...

  8. LeetCode算法训练-贪心算法 455.分发饼干 376. 摆动序列 53. 最大子序和

    欢迎关注个人公众号:爱喝可可牛奶 LeetCode算法训练-贪心算法 455.分发饼干 376. 摆动序列 53. 最大子序和 前置知识 贪心算法核心是找局部最优解,通过局部最优推导出全局最优 Lee ...

  9. API 小白入门教程

    正如汽车行业必须达到一定的规模,才能让企业只生产一个部件.软件产业现在已经足够大了,尤其当你接受所谓的"软件吞噬世界"此类的说法时更是如此.因此,和汽车工业不再生产自己的钢铁一样, ...

  10. 【4】java之基础数据类型的包装类

    一.认识包装类 ​ java 在设计之初有一个基本原则:一切皆对象,一切的操作都基于对象,但是有一个矛盾,基本数据类型不是对象.为了符合于这种要求,最早使用人为的方式解决此问题,如下所示: class ...