android按下返回键弹出提示框的几种做法!

您所在的位置:网站首页 返回键长什么样子 android按下返回键弹出提示框的几种做法!

android按下返回键弹出提示框的几种做法!

2024-07-11 23:18| 来源: 网络整理| 查看: 265

       第一次写技术博客,这个问题困扰了一天多的时间,本人接触安卓时间较短,写博客也是为了记录自己的感想和收获,也是为了学习,在此谢谢许多辛苦写作的博客大牛,谢谢你们的无私奉献。

话不多说,开始正事,首先明确触摸屏幕时有哪些方法被激活了,

1 触摸控件(View)首先执行dispatchTouchEvent方法。

2在dispatchTouchEvent方法中先执行onTouch方法,后执行onClick方法(onClick方法在onTouchEvent中执行,下面会分析)。

3如果控件(View)的onTouch返回false或者mOnTouchListener为null(控件没有设置setOnTouchListener方法)或者控件不是enable的情况下会调运onTouchEvent,dispatchTouchEvent返回值与onTouchEvent返回一样。

4如果控件不是enable的设置了onTouch方法也不会执行,只能通过重写控件的onTouchEvent方法处理(上面已经处理分析了),dispatchTouchEvent返回值与onTouchEvent返回一样。

5如果控件(View)是enable且onTouch返回true情况下,dispatchTouchEvent直接返回true,不会调用onTouchEvent方法。

 所以解决办法也从这里入手,在dispatchTouchEvent或者onTouchEvent方法中添加弹出对话框的逻辑;下面是代码,

import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; import android.os.Bundle; import android.view.KeyEvent; public class MainActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } // public boolean dispatchKeyEvent(KeyEvent event) { // if (event.getKeyCode() == KeyEvent.KEYCODE_BACK // && event.getAction() == KeyEvent.ACTION_DOWN) { // showDialog(); // return false;// 返回false,不会把事件消费掉,会继续调用onBackPressed // } // return false; // } // public boolean dispatchKeyEvent(KeyEvent event) { // // TODO Auto-generated method stub // if(event.getKeyCode()==KeyEvent.KEYCODE_BACK&&event.getAction()== // KeyEvent.ACTION_DOWN){ // showDialog(); // return false; // } // return super.dispatchKeyEvent(event); // } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { showDialog(); return false; } return super.onKeyDown(keyCode, event); } private void showDialog() { AlertDialog.Builder builder = new Builder(this); builder.setTitle("提示"); builder.setMessage("是否确定退出?"); builder.setPositiveButton("是", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.dismiss(); finish(); } }); builder.setNegativeButton("否", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.dismiss(); } }); builder.create().show(); // AlertDialog isExit = new AlertDialog.Builder(this).create(); // // 设置对话框标题 // isExit.setTitle("系统提示"); // // 设置对话框消息 // isExit.setMessage("确定要退出吗"); // // 添加选择按钮并注册监听 // isExit.setButton("确定", new DialogInterface.OnClickListener() { // // @Override // public void onClick(DialogInterface dialog, int which) { // // TODO Auto-generated method stub // // } // }); // isExit.setButton2("取消", new DialogInterface.OnClickListener() { // // @Override // public void onClick(DialogInterface dialog, int which) { // // TODO Auto-generated method stub // // } // }); // // 显示对话框 // isExit.show(); } public void onBackPressed() { System.out.println("2"); // TODO Auto-generated method stub super.onBackPressed(); } }



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3