AlertDialog和AlertDialog.builder、返回键退出操作

Android使alertDialog.builder不会点击外面和按返回键消失的方法 本篇文章主要介绍了Android使alertDialog.builder不会点击外面和按返回键消失的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。 立即下载

从字面意思来理解,AlertDialog的意思为警告框。

java.lang.Object
   ↳	android.app.Dialog
 	   ↳	android.app.AlertDialog

由此可以看的出来,AlertDialog是Dialog的直接子类,所以可以使用Dialog类中的各个操作方法。

但是从帮助文档里面可以发现,这个类里面的构造方法全部使用了protected关键字定义,也就意味着AlertDialog的构造方法已经被隐藏了。

因此如果想要创建AlertDialog对话框的话,就必须使用AlertDialog.builder类来完成。(这个类也是一个专门用于创建对话框的类)

而从AlertDialog.builder类中可以发现,用户可以进行各种各样的自定义,比如标题、icon、内容等等

首先编辑activity_main.xml 在XML里面添加一个按钮进行提示框的展示

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    
    <Button 
        android:id="@+id/showdialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/show_dialog"/>

</LinearLayout>

接着在MainActivity.java里面的操作将变的很简单。

package com.demo.dialogpro;

import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

	// 定义按钮组件
	private Button showDialog = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// 获取组件
		showDialog = (Button) findViewById(R.id.showdialog);
		// 设置监听
		showDialog.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// 自定义icon、title、message
				new AlertDialog.Builder(MainActivity.this).setTitle("警示框示例")
						.setIcon(R.drawable.dialog).setMessage("显示提示信息").show();

			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

以下为点击Button之后的运行结果:



但是在日常使用中,经常会使用到有按钮的提示框使用户可以选择,比如说删除数据的时候给用户提示是否删除,会有删除以及取消按钮

多个按钮的提示框

这里还是应该编辑activity_main.xml文件,在里面添加一个button来唤醒提示框。

    <Button
        android:id="@+id/del"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/del_dialog" />

下来在MainActivity.java类里面进行操作

		// 获取组件
		delDialog = (Button) findViewById(R.id.del);
		// 设置监听
		delDialog.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				new AlertDialog.Builder(MainActivity.this)
				// 设置标题
						.setTitle("是否删除")
						// 设置icon
						.setIcon(R.drawable.dialog)
						// 设置提示消息
						.setMessage("是否真的确定删除")
						// 设置左键确定按钮
						.setPositiveButton("确定",
						// 提示:这里的OnClickListener是DialogInterface.OnClickListener()
								new DialogInterface.OnClickListener() {

									// 可以在这里设置要进行的操作
									@Override
									public void onClick(DialogInterface dialog,
											int which) {
										// TODO Auto-generated method stub

									}
								})
						// 设置中键详情按钮
						.setNeutralButton("详情",
								new DialogInterface.OnClickListener() {

									@Override
									public void onClick(DialogInterface dialog,
											int which) {
										// TODO Auto-generated method stub

									}
								})
						// 设置右键取消按钮
						.setNegativeButton("取消",
								new DialogInterface.OnClickListener() {

									@Override
									public void onClick(DialogInterface dialog,
											int which) {
										// TODO Auto-generated method stub

									}
								}).show();
			}
		});


这里并没有进行详细的操作,如需进一步的操作,只需要在DialogInterface.OnClickListener中的onClick方法里面设置即可

下图为运行结果:



退出操作

当然,上面的操作也可以对程序的退出进行提示,当用户点击某个按钮的时候提示用户是否退出,如果选择确定的话则直接调用activity下的finish()方法即可。

在使用android手机的时候会发现,很多程序的退出会使用单击键盘返回键来操作,而不是去点击某一button按钮。

要实现用户点击键盘返回键来进行程序操作,这里就需要覆写一个方法:onKeyDown();

onKeyDown()

/**
	 * 退出程序
	 */
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			new AlertDialog.Builder(MainActivity.this)
			// 设置标题
					.setTitle("退出")
					// 设置icon
					.setIcon(R.drawable.dialog)
					// 提示框的详细消息
					.setMessage("确定退出本程序")
					// 确定按钮
					.setPositiveButton("确定",
							new DialogInterface.OnClickListener() {

								@Override
								public void onClick(DialogInterface dialog,
										int which) {
									// 程序退出
									MainActivity.this.finish();

								}
							})
					// 取消按钮不进行任何操作
					.setNegativeButton("取消",
							new DialogInterface.OnClickListener() {

								@Override
								public void onClick(DialogInterface dialog,
										int which) {

								}
							}).show();
		}

		return false;
	}

下图为运行结果:


软考高级架构师笔记-10数学计算题 专栏《软考高级架构设计师》更新了,本章列举了10个场景计算题的解法,温故而知新,大家快来卷一卷 阅读详情

相关推荐

langchain4j+milvus实战

本文主要研究一下如何使用langchain4j来对接向量数据库milvus。

go4it 1472

android设置出错以后对话框提示并返回上一级

今天遇到了如下问题,在Android中,部分从后台中获得的数据会出错,需要给用户一个提示。 我的思路是:提供一个出错后提醒的对话框,然后,让用户点击后返回上一个界面。 整个程序如下: public class ClassThis extends BaseActivity { public void showDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); //设置标题

wangzhezhilu001的专栏 412

Notepad++ XML Tools插件:手把手教你格式化混乱XML与一键语法检查(保姆级教程)

本文详细介绍了如何使用Notepad++的XML Tools插件格式化混乱的XML文件并进行一键语法检查。通过插件安装、格式化实战和语法排错的完整流程,帮助开发者高效处理XML数据,提升API通信和数据存储的工作效率。特别适合需要快速验证和整理XML配置的开发人员。

weixin_42619742的博客 325

android返回键销毁程序,Android AlertDialog 点击区域外不可取消,点击返回键可以与 Activity 同时撤销...

AlertDialog 属性设置点击区域外不可取消,点击返回键可以与Activity同时撤销public void initAlertDialog() {AlertDialog.Builder builder = new AlertDialog.Builder(this);View view = View.inflate(this, R.layout.dialog_view, null);buil...

weixin_39761880的博客 805

RK3566添加ffpeg【Buildroot系统】

有很多人都发现了RK3566系列的芯片是不可以直接使用ffmpeg官网源码的!会报错: Not a video capture device. /dev/video0: No such device 接下来我们就来解决这个问题!!

honmy18的博客 4070

保姆级教程:在STM32H750VBT6上跑起来CMSIS-DSP库(基于CubeMX+Keil)

本文详细介绍了在STM32H750VBT6微控制器上配置和运行CMSIS-DSP库的全过程,包括开发环境搭建、CubeMX工程配置、Keil工程设置以及DSP库的实际应用示例。通过FFT频谱分析和音频均衡器等实战案例,展示了如何利用STM32H750VBT6的硬件FPU加速DSP运算,提升实时信号处理性能。

weixin_30236595的博客 458

Dialog与返回键onKeyDown

转自:http://www.android100.org/html/201403/07/5804.html 1、如果想阻止“返回键”关闭Dialog最简单的方法是setCancelable(false)    2、最简单的方法重载Activity的OnKeyDown()方法,捕捉想要屏蔽的按键: public boolean onKeyDown(int keyCode, KeyE

再见理想 5558

数学建模预测模型——回归分析预测

作为预测模型的大块头,回归分析预测绝对是比较常用的预测模型的一种,下面是对该模型的学习,欢迎大家指正😊。

everything is possible,anything is OK. 1万+

android AlertDialog 捕获返回键

1、AlertDialog  捕获返回键的处理,使用setOnKeyListener事件可以。 2、AlertDialog  setView自定义的布局,去除上下左右的距离时使用的是: builder.setView(shareView, 0, 0, 0, 0), 并且还要用AlertDialog builder = new AlertDialog.Builder(ProductActivi...

justwyy的专栏 704

【OpenClaw从入门到精通】第23篇:OpenClaw办公自动化实战—报表生成+文档批量处理+跨系统同步(2026实操进阶版)

本文聚焦OpenClaw在办公自动化场景的进阶应用,针对职场中高频且重复的报表生成、文档批量处理、跨系统数据同步三大痛点,提供从环境搭建、原理讲解到完整代码实现的全流程实操指南。方案基于Python生态工具链(pandas、Playwright、PyPDF2等)与OpenClaw的低代码编排能力,兼顾新手入门与进阶提升——新手可直接复用代码快速落地,进阶读者可学习流程编排逻辑进行二次开发。所有案例均基于真实办公场景设计,部分虚拟场景已明确标注,代码经本地环境验证可复现。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 967

vue2 - elementUI表格table树形结构复选框勾选父子联动示例,el-table树状表格tree复选框checkbox多选框全选/反选取消children(当子级全选中,父级自动勾选)

vue2,elementui,el-table树状表格多选,树形结构结合多选框使用,实现单选父子联动全选反选,勾选联动父级勾选,表格多选check父子联动,table表格children如何嵌入复选框,el-table使用多选框与树形数据写一个有半选全选功能的表格,el-table树形表格实现复选框多选效果,表格树状结构多选,每一个row都可以选中并且联动全选按钮,table选父带子选子带父,树形数据与懒加载,Table表格树形结构多选框选中父级时会选中子级,elementUI表格里树形结构嵌套复选框全选全

✅ 精选推荐文章 1万+

Android——AlertDialog的上下文

requireContext()或者this返回与当前组件(如 Activity 或 Fragment)关联的上下文。这通常是一个活动上下文(Activity Context),可以用来显示 UI 元素,如对话框。getApplicationContext()返回的是应用程序上下文(Application Context)。这通常是一个全局上下文,不与任何特定的 UI 组件绑定。创建 AlertDialog.Builder 对象的时候,需要一个上下文。所以选择下面那种上下文,才能成功显示模态弹窗。

furkaies的博客 364

二十一、CANdelaStudio深入-SPRMIB的配置

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的肯定响应抑制位配置,欢迎各位朋友订阅、评论,可以提出宝贵意见,以持续输出更好的作品,同时会根据评论、私信不定期更新文章内容,以及专栏目录。订阅该专栏的朋友可私信小编免费答疑解惑(^U^)ノ~YO CANdelaStudio-从入门到深入目录 文章目录CANdelaStu

诊断协议那些事儿's blog 1870

Android按返回键弹出对话框退出应用程序

在当前的Activity中添加以下代码:import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.KeyEvent; public class MainActi

Zuo_0625的博客 2539

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

android中点击系统返回键退出

----------------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-

D2587659184的博客 615

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android里面如何编写退出主程序的提示代码

当用户选择“确定”,就退出当前的对话框。其中,有个很重要的函数,Activity.finish(),通过调用这个函数,退出当前运行的整个Android程序. 当用户选择“取消”的时候,只要单纯的retuan,即可返回主程序. 我们可以定义一个showTips()的专用方法在main Activity里面,那么,每次我们写的时候,就调用这个函数的就可以了。 private void showT...

weixin_33975951的博客 91

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ANDROID 监听返回键,重写事件

@Override /** * 监听返回键 重写退出弹框 */ public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode==KeyEvent.KEYCODE_BACK) { //创建退出对话框 AlertDialog isExit = new AlertDialog.Builder(this).create();

Komyo的博客 648

android按返回键,弹出退出提示对话框,并退出应用程序。

@Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub switch (keyCode) { case KeyEvent.KEYCODE_BACK:

owetointernet的专栏 1412

应用程序退出的提示框

有不少初学者,都看到过某个应用退出时,会有个对话框进行提示,例如:您确定要退出该应用吗?其实,这个退出的对话框写起来非常简单。代码如下: 1.按返回键时,应用程序提示的退出框(覆写onkeydown方法) @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode==KeyEvent.K

Android_007的专栏 1186

Android 如何监听返回键,弹出一个退出对话框

Android 如何监听返回键点击事件,并创建一个退出对话框, 防止自己写的应用程序不小心点击退出键而直接退出。自己记录下这个简单的demo,备用。 注:如下代码当时是从网上copy过来的,现在忘了它出自哪个原作者了,在此说声抱歉。 源码如下: [html] view plaincopy public class BackKey

记录移动开发相关的知识 1621

AlertDialog对话框的几种实现方法,AlertDialog.Builder类

AlertDialog1.构建者模式创建一个AlertDialog对象2.创建一个自己的AlertDialog类,实例化一个AlertDialog对象3.小结 1.构建者模式创建一个AlertDialog对象 构建者模式是Android开发的一种模式 . 大致的思路: 通过AlertDialog.Builder类创建一个对象,通过该类的方法实现一系列的功能. AlertDialog.Builder...

qq_45064049的博客 3679

AlertDialog.Builder setCancelable用法

AlertDialog.Builder的setCancelable public AlertDialog.Builder setCancelable (boolean cancelable) Since: API Level 1 Sets whether the dialog is cancelable or not default is true. 设置为

似水流云 2万+

主界面按返回键弹出确认退出对话框

根据产品设计的需求,有时需要在程序主界面按手机的返回实体键时,出现一个确认退出的对话框。 以下代码实现该功能,且可以放在任何一个Activity中使用。 @Override publicboolean onKeyDown(int keyCode, KeyEvent event) { // 按下键盘上返回按钮 if (keyCode == KeyEvent.KEYC...

angchanghui2104的博客 544

Android alertdialog实现确认退出

package com.example.alertdialog; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.view.Menu; ...

diantingpi1639的博客 289

捕捉返回键,实现退出确认(参考版)

最近做到一个返回退出确认的功能。之前很早在其他项目的时候就已经参考过网络上的资源实现了。今天才写出来,其实也是为了做个笔记。因为发现自己最近总是把做过的技术给忘记了。倍感压力啊。都是岛国的妹子惹得祸。         好了,不扯了。这个功能很简单,就是调用出方法onBackPressed,实现里面的AlertDialog监听就好了。 功能代码: // 捕捉返回键,实现退出程序的功能 @Ov

vaecer 1200
上一篇: ListView浅析 笔记
下一篇: AlertDialog和AlertDialog.builder(二)
mr_same
博客等级 码龄17年 8粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值