Android之AlertDialog(弹出式对话框)的使用

一、简单的内容文本弹出式对话框
还是一样MainActivity的布局文件就不放上了,就是一个简单的Button控件,在Java代码中为其绑定了一个监听器。

首先我们需要创建这个AlertDialog,因此我们新建一个方法initDialog,在此之前我们需要在全局声明一个AlertDialog对象(AlertDialog alertDialog;),下面的方法中就是在全局声明了AlertDialog对象的前提下。

    /*
    初始化AlertDialog
     */
    public void initDialog()
    {
        //创建AlertDialog的构造器的对象
        AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
        //设置构造器标题
        builder.setTitle("提示");
        //构造器对应的图标
        builder.setIcon(R.mipmap.ic_launcher);
        //构造器内容,为对话框设置文本项(之后还有列表项的例子)
        builder.setMessage("你是否要狠心离我而去?");
        //为构造器设置确定按钮,第一个参数为按钮显示的文本信息,第二个参数为点击后的监听事件,用匿名内部类实现
        builder.setPositiveButton("是呀", new DialogInterface.OnClickListener()
        {
            @Override
            public void onClick(DialogInterface dialog, int which)
            {
                //第一个参数dialog是点击的确定按钮所属的Dialog对象,第二个参数which是按钮的标示值
                finish();//结束App
            }
        });
        //为构造器设置取消按钮,若点击按钮后不需要做任何操作则直接为第二个参数赋值null
        builder.setNegativeButton("不呀",null);
        //为构造器设置一个比较中性的按钮,比如忽略、稍后提醒等
        builder.setNeutralButton("稍后提醒",null);
        //利用构造器创建AlertDialog的对象,实现实例化
        alertDialog=builder.create();
    }

在创建AlertDialog对象成功后,在需要显示AlertDialog时用alertDialog.show()即可,否则无法显示。

由于项目要求是App在退出时跳出弹出式对话框提醒用户是否退出,因此需要重写Android系统返回按键的监听事件

    /**
     * 表示点击安卓系统返回键时触发的回调方法
     */
    @Override
    public void onBackPressed()
    {
        //当AlertDialog存在实例对象并且没有在展示时
        if(alertDialog!=null&&!alertDialog.isShowing())
        {
            alertDialog.show();
        }
    }

下面放上整个App的代码

package com.studio.alertdialogdemo;

import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

/*
演示AlertDialog的基本使用
 */
public class MainActivity extends AppCompatActivity
{
   
    private AlertDialog alertDialog;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initDialog();
    }
    /*
    初始化AlertDialog
     */
    public void initDialog()
    {
        //创建AlertDialog的构造器的对象
        AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
        //设置构造器标题
        builder.setTitle("提示");
        //构造器对应的图标
        builder.setIcon(R.mipmap.ic_launcher);
        //构造器内容,为对话框设置文本项(之后还有列表项的例子)
        builder.setMessage("你是否要狠心离我而去?");
        //为构造器设置确定按钮,第一个参数为按钮显示的文本信息,第二个参数为点击后的监听事件,用匿名内部类实现
        builder.setPositiveButton("是呀", new DialogInterface.OnClickListener()
        {
            @Override
            public void onClick(DialogInterface dialog, int which)
            {
                //第一个参数dialog是点击的确定按钮所属的Dialog对象,第二个参数which是按钮的标示值
                finish();//结束当前Activity
            }
        });
        //为构造器设置取消按钮,若点击按钮后不需要做任何操作则直接为第二个参数赋值null
        builder.setNegativeButton("不呀",null);
        //为构造器设置一个比较中性的按钮,比如忽略、稍后提醒等
        builder.setNeutralButton("稍后提醒",null);
        //利用构造器创建AlertDialog的对象,实现实例化
        alertDialog=builder.create();
    }

    /*
    实现Button监听器的除了内部类外的方法
    点击Button时弹出AlertDialog
     */
    public void showDialog(View v)
    {
        //当AlertDialog存在实例对象并且没有在展示时
        if(alertDialog!=null&&!alertDialog.isShowing())
            alertDialog.show();
    }

    /**
     * 表示点击安卓系统返回键时回调的方法
     */
    @Override
    public void onBackPressed()
    {
        //当AlertDialog存在实例对象并且没有在展示时
        if(alertDialog!=null&&!alertDialog.isShowing())
        {
            alertDialog.show();
        }
    }
}

当我们点击了返回键时,效果图如图
这里写图片描述
之后只有我们点击是呀才会退出当前App

二、列表式弹出式对话框
首先放上布局文件效果图
这里写图片描述
我们最终要实现的效果就是:
1、点击设置字体颜色按钮,弹出一个列表式对话框,当我们点击其中的列表项时MainActivity中的TextView文本内容HelloWorld会变成对应的颜色
这里写图片描述


    /**
     * 创建并显示普通列表的AlertDialog方法
     */
    public 
  • 0
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值