zoukankan      html  css  js  c++  java
  • 关于如何侦听返回键事件

    1.关于如何侦听返回键事件
          不知道您有没有这样的体验,做了个程序,不想让用户一直点击返回键,不知不觉中退了出来。希望给用户一个更为有好的提示,留下那些其实并没有真的要退出的用户。好吧,今天我就来说说如何实现这一功能。

          首先明确一点,用户的一直点击的返回键,之后就会退出到桌面。那么,如何提示呢?很简单,在用户一顿返回键回到程序入口处(即程序的第一个Activity)给用户一个提示,您再按可就退出程序啦?那么如何在程序入口处增加这个提示呢?明显,我们要侦听用户的点击返回键这一事件。怎样才能做到侦听这一事件呢?代码如下:

    view plaincopy to clipboardprint?01.@Override  02.    public boolean onKeyDown(int keyCode, KeyEvent event) {   03.        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {   04.            dialog();   05.            return true;   06.        }   07.        return true;   08.    }  @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
      if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
       dialog();
       return true;
      }
      return true;
     }

    重写了Activity的侦听方法,如果用户按的键值与返回键键值相同便执行显示dialog的操作。

    当然你还要重写dialog方法:

    view plaincopy to clipboardprint?
    01.protected void dialog() {  
    02.        AlertDialog.Builder builder = new Builder(AccoutList.this);  
    03.        builder.setMessage("确定要退出吗?");  
    04.        builder.setTitle("提示");  
    05.        builder.setPositiveButton("确认",  
    06.        new android.content.DialogInterface.OnClickListener() {  
    07.            @Override 
    08.            public void onClick(DialogInterface dialog, int which) {  
    09.                dialog.dismiss();  
    10.                //AccoutList.this.finish();  
    11.                //System.exit(1);  
    12.                android.os.Process.killProcess(android.os.Process.myPid());  
    13.            }  
    14.        });  
    15.        builder.setNegativeButton("取消",  
    16.        new android.content.DialogInterface.OnClickListener() {  
    17.            @Override 
    18.            public void onClick(DialogInterface dialog, int which) {  
    19.                dialog.dismiss();  
    20.            }  
    21.        });  
    22.        builder.create().show();  
    23.    } 
    protected void dialog() {
      AlertDialog.Builder builder = new Builder(AccoutList.this);
      builder.setMessage("确定要退出吗?");
      builder.setTitle("提示");
      builder.setPositiveButton("确认",
      new android.content.DialogInterface.OnClickListener() {
       @Override
       public void onClick(DialogInterface dialog, int which) {
        dialog.dismiss();
        //AccoutList.this.finish();
        //System.exit(1);
        android.os.Process.killProcess(android.os.Process.myPid());
       }
      });
      builder.setNegativeButton("取消",
      new android.content.DialogInterface.OnClickListener() {
       @Override
       public void onClick(DialogInterface dialog, int which) {
        dialog.dismiss();
       }
      });
      builder.create().show();
     }

    protected void dialog() {

    这时候您再在程序的入口Activity点击返回键时便会看见如下提示:

    2.怎么使程序从反复跳转的Activity中快速退出
         有些时候我们很纠结,可能程序会在某两个Activity之间反复跳转,这时候如果用户想退出的时候点击返回键,只能按照相反的顺序依次重新跳转之后才能退出,这样的用户体验真的很差。如何解决这个问题呢?

          首先我们思考一个问题,为什么会用户在点击了返回键之后会返回到之前的Activity呢?对,因为之前的Activity还存在于内存中,当用户点击返回键之后,系统会自动切换到上一个Activity。了解了这些问题就解决了,对于那些不需要用户重新返回的Activity,我们可以直接让Activity结束掉,这样用户再按返回键的时候便不会再跳到上一个Activity了。

    如何结束?这个简单了,就一句。

    view plaincopy to clipboardprint?
    01.Activityname.this.finish();//Activityname就是您要结束的那个Activity类的名字 
    Activityname.this.finish();//Activityname就是您要结束的那个Activity类的名字

  • 相关阅读:
    从C,C++,JAVA和C#看String库的发展(一)----C语言和C++篇
    Intent----android中的伟大邮差
    一步一步掌握线程机制(五)---等待与通知机制
    一步一步掌握线程机制(四)---同步方法和同步块
    一步一步掌握线程机制(三)---synchronized和volatile的使用
    利用单例模式解决全局访问问题
    一步一步掌握java的线程机制(二)----Thread的生命周期
    一步一步掌握java的线程机制(一)----创建线程
    如何快速学会android的四大基础----Service篇
    前端工程师必备实用网站
  • 原文地址:https://www.cnblogs.com/moonvan/p/2021041.html
Copyright © 2011-2022 走看看