文档章节

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

短短的歼击机
 短短的歼击机
发布于 2013/01/11 16:35
字数 787
阅读 144
收藏 0

在Android的手机里面,有个返回按键,通过返回按键,用户可以返回上一层的Activity, 又或者可以直接退出程序。

这样,就给用户带来一个新的问题,当用户正在做着一些非常重要的事情的时候,比如浏览文件、或者是在编辑重要的数据的时候,不小心按了返回键,如果当前的Activity正好是处于最外一层的时候,如果没有给按键定义一个退出的按钮的时候。用户可能通过返回按键就直接退出了整个程序,从而导致了一些用户使用上的不必要而且可以避免的不愉快的事情发生。

那么,在整个程序退出的时候,如何做到提示的作用呢?

我们希望做到的是,当用户要退出整个程序的时候,程序给出一个提示按钮,等用户再次确认后才退出。

 

现在,先看看如何编写退出程序的提示对话框。程序会用到AlertDialog 这个类,在这个类里面,当用户选择返回键的时候,会有两个按钮,一个是“确定”,一个是“取消”。

为了响应事件,需要编写事件响应函数AlterDialog.setPositiveButton(int textId, DialogInterface.OnClickListener listener).

-          textId, 要显示给用户看的资源或者文本

-          listener, 是用户单击“确定”或者“取消”按钮所响应的时间

当用户选择“确定”,就退出当前的对话框。其中,有个很重要的函数,Activity.finish(),通过调用这个函数,退出当前运行的整个Android程序.

当用户选择“取消”的时候,只要单纯的retuan,即可返回主程序.

我们可以定义一个showTips()的专用方法在main Activity里面,那么,每次我们写的时候,就调用这个函数的就可以了。

private void showTips(){

AlertDialog alertDialog = new AlertDialog.Builder(Activity.this)

.setTitle(“退出程序”)

.setMessage(“是否退出程序”)

.setPositiveButton(“确定”, new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which)

Activity.this.finish();

}

}).setNegativeButton(“取消”,

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which)

return;

}}).create();  //创建对话框

alertDialog.show(); // 显示对话框

}

那么,在哪里调用这个提示的方法呢?

最初我的想法是打算在Android 的 主Activity 里面的onDestory() 函数里面定义的,后来试了一下,发觉其实这个函数是在当初Activity退出的时候,才会被调用的,如果在这里才调用,就太迟了。

所以,应该找到的是返回按键的响应时间,也就是函数Activity. onKeyDown(int keyCode, KeyEvent event) 函数里面响应事件的发生.

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if(keyCode==KeyEvent.KEYCODE_BACK && event.getRepeatCount()==0){

this.showTips();

return false;

}

return false;

}

至此,通过复写onKeyDown函数,当用户单击返回的按钮的时候,就会弹出提示的对话框,可以有效地防止用户由于失误引起的不必要的退出。

 

注意:强按Home键,一样可以退出应用,避开了提示框,这个方法只适合按返回键,大家要小心哦

© 著作权归作者所有

短短的歼击机

短短的歼击机

粉丝 82
博文 268
码字总数 269797
作品 0
武汉
高级程序员
私信 提问
Android HookActivity一行代码实现开屏广告

需求背景 多个产品线都需要实现开屏广告,我们产品广告都是接的我们自家广告SDK,而只是几行代码请求我们广告,广告SDK会把View封装好返回来,要做的事情只是获取响应结果,并且出来. 如何实...

xwdz
2018/05/09
0
0
android面试1

1 . 请描述下Activity的生命周期。 必调用的三个方法:onCreate() --> onStart() --> onResume(),用AAA表示 (1)父Activity启动子Activity,子Actvity退出,父Activity调用顺序如下 AAA --...

迷途d书童
2012/03/30
1K
0
android终止无限循环线程和程序退出时销毁线程

android,启动了一个子线程,这个子线程是一个死循环,不成的打印“Hello”。 现在要实现点击一个Button,让这个子线程终止,用什么方法啊? stop()不起作用,destroy()有异常,Handler貌似...

长平狐
2013/12/25
944
0
[PHP]通过 PHP for Android 利用PHP编写Android应用教程

本文摘自 IT博客 http://www.zhangdafen.com 概述 Android 上的主要开发语言是Java,让很多PHPer觉得非常遗憾。但是自从ASE(Android Scripting Environment-Android脚本环境)诞生后,允许用...

81028386
2013/03/18
1K
0
Cocos2d-x跨Android&iOS平台开发入门

本教程由泰然教程组出品 Hello, Cocos2D-X for iOS! 配置cocos2d-x的eclipse开发环境 Setup the Android NDK (Native Development Toolkit) Hello, Cocos2D-X for Android! 第一个提示要求你......

lying
2013/09/05
89
0

没有更多内容

加载失败,请刷新页面

加载更多

Andorid SQLite数据库开发基础教程(2)

Andorid SQLite数据库开发基础教程(2) 数据库生成方式 数据库的生成有两种方式,一种是使用数据库管理工具生成的数据库,我们将此类数据库称为预设数据库,另一种是使用代码生成的数据库。...

大学霸
27分钟前
3
0
YecPad 开源啦!: 基于C#的功能强大的可编辑记事本文本编辑软件

JY Lin 开源:YecPad : 基于C#的功能强大的可编辑记事本文本编辑软件 YecPad 是一款基于C#编程语言开发的功能强大的可编辑记事本文本编辑软件。 可以进行文本文件的打开、保存、删除及编辑功...

YDOOK
34分钟前
3
0
StringBuilder 与 StringBuffer 的区别

StringBuffer是线性安全的,支持并发操作,适合多线程。 StringBuilder线性不安全,不支持并发操作,适合单线程。 也就是说他们俩区别就在于支不支持并发操作,使用上基本上类似...

无名氏的程序员
37分钟前
3
0
js 找数组中的最值

本文转载于:专业的前端网站➸js 找数组中的最值 背景: 2个数组以下 , 比如 [[4, 9, 1, 3], [13, 35, 18, 26], [32, 35, 97, 39], [1000000, 1001, 857, 1]] 找最值的时候,我一开始想用两个...

前端老手
46分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部