首页 > 其他分享 >软件工程日报八——AlertDiatog的使用

软件工程日报八——AlertDiatog的使用

时间:2023-03-02 18:25:50浏览次数:36  
标签:对话框 日报 AlertDiatog builder DialogInterface AlertDialog 软件工程 import new

今天学习了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,builder,DialogInterface,AlertDialog,软件工程,import,new
From: https://www.cnblogs.com/jiacheng-712/p/17171488.html

相关文章

  • 今日报告
    总结--忙!且!乱!代码时间(包括上课):7h代码量(行):660行(仍旧是Android的半成品)博客数量(篇):1篇了解到的相关知识点:1、SSH密钥的获取的相关步骤2、一些Android的相关知识......
  • 今日报告-10
    今日打卡所花时间(包括上课):10h代码量(行):1000发表博客:3篇(不包括本篇)了解到的知识点:今天看了一些安卓网课教程,同时完全完成servlet增删改查,成功完整的完成了servlet实现......
  • 3月1日软件工程日报
    学习时间:二小时代码量:200所学知识点:今天在网上查阅了在使用JDBC连接远程数据库为什么要使用IP,查阅到通过IP查找到主机。同时学习了部分Android的进程知识,在......
  • 软件工程日报七——checkbox的使用和AlertDialog
    今天学了checkbox的使用<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://s......
  • 软件工程课程-记背
    1.1git命令1.2第一章当中的生命周期一共是几个阶段,每个阶段什么内容,做什么事情?(图中是在瀑布模型的基础上增加了项目管理的相关过程和实践)在典型的瀑布型生命周期模型......
  • 2023.2.28——软件工程日报
    所花时间(包括上课):8.5h代码量(行):0行博客量(篇):1篇今天,上午学习了英语和数据库,下午学习python和数学建模。我了解到的知识点:晚上研究了一会数学建模,时间有点长,博客发布的晚......
  • 今日报告-09
    今日打卡所花时间(包括上课):7h代码量(行):300发表博客:4篇(不包括本篇)了解到的知识点:今天复习了一下JAVA的一些基础知识,并且看了许多网课教程,对Servlet有了更深的认识.主要......
  • 软件工程学习第八天
    今天我拿出30分钟左右继续学习css,今天学的是表格。用css将表格变得更美观,可以从表格的宽度高度,边框,文字对齐方式,填充以及颜色入手。用border属性可以设置表格的边框,但是......
  • 软件工程日报六——TextView和button
    今天继续学习安卓stduio的知识——TextView和buttonTextView是安卓stduio中十分重要的一个控件,它可以在安卓应用上显示文字 通过网络我找到了TextView的相关用法如下:......
  • 今日报告
    总结一下:忙碌且迷茫的一天代码时间(包括上课):5h代码量(行):200行(主要在写Android程序,还是个半成品)博客数量(篇):3篇了解到的相关知识点:1、有关Github的相关知识,学习了如何不用......