众所周知用户按back键退出程序的时候是调用finish()来销毁活动的,那么我们是否可以重写finish()这个函数来过滤finish()的调用
首先,新建一个android工程,然后ctrl+o(android studio)搜索finish()
然后回车自动生成重写finish()函数代码
这里我们要用到AlertDialog对话框,首先我们在我们要重写的函数体里面new 一个AlertDialog
AlertDialog.Builder dialog=new AlertDialog.Builder(MainActivity.this);//new AlertDialog对象
然后我们设置对话框标题,内容,是否back键销毁对话框
dialog.setTitle("温馨提示");//对话框标题
dialog.setMessage("是否退出本程序?");//对话框内容
dialog.setCancelable(false);//是否back键销毁
接下来我们来创建AlertDialog的PositiveButton和NegativeButton的按钮Text和Event
dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
到这里我们就把整个AlertDialog给完成了,接下来我们应该做的就是给按钮事件添加我们的代码
如果用户点了“确定”那么我们就应该写退出代码这里我们用java自带的,当然也可以可以写安卓的
第一种Java自带
System.exit(0);
第二种安卓的killProcess
android.os.Process.killProcess(android.os.Process.myPid());
完后了“确定”然后取消的话我们不用添加任何事件代码即可
接下来就是调用AlertDialog的show()函数
dialog.show();
好,整个功能算是完成
实现代码:
@Override
public void finish() {
AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
dialog.setTitle("温馨提示");
dialog.setMessage("是否退出本程序?");
dialog.setCancelable(false);
dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
System.exit(0);
}
});
dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this, "谢谢支持", Toast.LENGTH_LONG).show();
}
});
dialog.show();
}
功能实现图: