应用的退出形式,双击返回键退出和对话框询问退出
2016-04-24 07:52
399 查看
布局就不写了,在MainActivity.class中
方法一:双击返回按钮退出应用程序
package com.example.yuxue.dnlearnalertdialog;
public class MainActivity
extends AppCompatActivity {
@Override
protected void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//定义一个计时的变量
private long exitTime=0;
//获取当前按钮的函数
@Override
public boolean
onKeyDown(int keyCode, KeyEvent event) {
//双击返回按钮退出应用程序
//判断按下的是返回键并且是按下的动作(不是长按或其他)
if
(keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
//判断按钮按下后的当前时间比原来的时间的差大于两秒
if
(System.currentTimeMillis()-exitTime>2000) {
Toast.makeText(MainActivity.this,
"双击退出!", Toast.LENGTH_SHORT).show();
exitTime=System.currentTimeMillis();
}else {//小于两秒就退出
finish();
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}
}
方法二:对话框的形式退出
package com.example.yuxue.dnlearnalertdialog;
public class MainActivity
extends AppCompatActivity {
@Override
protected void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//获取当前按钮的函数
@Override
public boolean
onKeyDown(int keyCode, KeyEvent event) {
//对话框的形式退出
if
(keyCode == KeyEvent.KEYCODE_BACK) {
AlertDialog.Builder builder = new
AlertDialog.Builder(this);
builder.setTitle("提示退出");
builder.setMessage("你真的确认退出吗?");
builder.setPositiveButton("确认",
listener);
builder.setNegativeButton("取消",
listener);
builder.show();
}
return super.onKeyDown(keyCode, event);
}
//匿名内部类 对话框的点击事件
private
DialogInterface.OnClickListener listener
= new DialogInterface.OnClickListener() {
@Override
public void
onClick(DialogInterface dialog, int
which) {
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
finish();// 关闭本Activity
//两种方法关闭对话框dialog.cancel(); 或 dialog.dismiss();
dialog.dismiss();
break;
case DialogInterface.BUTTON_NEGATIVE:
dialog.cancel();
break;
}
}
};
}
方法一:双击返回按钮退出应用程序
package com.example.yuxue.dnlearnalertdialog;
public class MainActivity
extends AppCompatActivity {
@Override
protected void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//定义一个计时的变量
private long exitTime=0;
//获取当前按钮的函数
@Override
public boolean
onKeyDown(int keyCode, KeyEvent event) {
//双击返回按钮退出应用程序
//判断按下的是返回键并且是按下的动作(不是长按或其他)
if
(keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
//判断按钮按下后的当前时间比原来的时间的差大于两秒
if
(System.currentTimeMillis()-exitTime>2000) {
Toast.makeText(MainActivity.this,
"双击退出!", Toast.LENGTH_SHORT).show();
exitTime=System.currentTimeMillis();
}else {//小于两秒就退出
finish();
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}
}
方法二:对话框的形式退出
package com.example.yuxue.dnlearnalertdialog;
public class MainActivity
extends AppCompatActivity {
@Override
protected void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//获取当前按钮的函数
@Override
public boolean
onKeyDown(int keyCode, KeyEvent event) {
//对话框的形式退出
if
(keyCode == KeyEvent.KEYCODE_BACK) {
AlertDialog.Builder builder = new
AlertDialog.Builder(this);
builder.setTitle("提示退出");
builder.setMessage("你真的确认退出吗?");
builder.setPositiveButton("确认",
listener);
builder.setNegativeButton("取消",
listener);
builder.show();
}
return super.onKeyDown(keyCode, event);
}
//匿名内部类 对话框的点击事件
private
DialogInterface.OnClickListener listener
= new DialogInterface.OnClickListener() {
@Override
public void
onClick(DialogInterface dialog, int
which) {
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
finish();// 关闭本Activity
//两种方法关闭对话框dialog.cancel(); 或 dialog.dismiss();
dialog.dismiss();
break;
case DialogInterface.BUTTON_NEGATIVE:
dialog.cancel();
break;
}
}
};
}
相关文章推荐
- 画图 201409-2
- 算法学习笔记之选择排序算法
- 高性能网络编程2----TCP消息的发送
- 【华为OJ】【算法总篇章】
- 三联莎士比亚阅读摘记
- 3月7日作业
- ASP.NET Core的配置(3): 将配置绑定为对象
- Asp.net 面向接口可扩展框架之核心容器
- 高性能网络编程1----accept建立连接
- String HDU5672
- 深夜课堂:JavaScript基本概念
- [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)
- [svn] linux 下svn服务器的搭建
- 【bzoj 1923】[Sdoi2010]外星千足虫
- 深夜课堂:JavaScript在HTML中的使用
- 【多题合集】网络流24题练习(更新至魔术球问题)
- 面试总结(php)
- 第六章-数据结构入门
- Redis_发布订阅(基础)
- 干货!IT小伙伴们实用的网站及工具大集合!持续更新!