zoukankan      html  css  js  c++  java
  • [转]Android应用中返回键的监听及处理

     

     

    用户在点击手机的返回按钮时,默认是推出当前的activty,但是有时用户不小心按到返回,所以需要给用户一个提示,这就需要重写onkeydown事件,实现的效果如下:

     
    标签:    Android SDK    
     

            

           

    代码片段(2) [全屏查看所有代码]

    1. [图片] 截图    

    2. [代码][Java]代码     跳至                         [2]     [全屏预览]

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        }
        protected void dialog() {
            AlertDialog.Builder builder = new Builder(HanderTestActivty.this);
            builder.setMessage("确定要退出吗?");
            builder.setTitle("提示");
            builder.setPositiveButton("确认",
                    new android.content.DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                            HanderTestActivty.this.finish();
                        }
                    });
            builder.setNegativeButton("取消",
                    new android.content.DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                        }
                    });
            builder.create().show();
        }
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
                dialog();
                return false;
            }
            return false;
        }

     

     

     

     

     

     

     

     

     

     
         
     
     

     
     

    MainActivity如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    package com.testnbackpressed; 
    import android.os.Bundle; 
    import android.view.KeyEvent; 
    import android.app.Activity; 
    /**
     * Demo描述:
     * 处理Back键按下事件
     
     * 注意事项:
     * 以下两种方法勿一起使用
     */ 
    public class MainActivity extends Activity { 
       
        @Override 
        protected void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.main); 
        
        /**
         * 监听Back键按下事件,方法1:
         * 注意:
         * super.onBackPressed()会自动调用finish()方法,关闭
         * 当前Activity.
         * 若要屏蔽Back键盘,注释该行代码即可
         */ 
        @Override 
        public void onBackPressed() { 
            super.onBackPressed(); 
            System.out.println("按下了back键   onBackPressed()");        
        
           
           
       /**
        * 监听Back键按下事件,方法2:
        * 注意:
        * 返回值表示:是否能完全处理该事件
        * 在此处返回false,所以会继续传播该事件.
        * 在具体项目中此处的返回值视情况而定.
        */ 
        @Override 
        public boolean onKeyDown(int keyCode, KeyEvent event) { 
            if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
                 System.out.println("按下了back键   onKeyDown()");  
                 return false
            }else
                return super.onKeyDown(keyCode, event); 
            
               
        
           
        @Override 
        protected void onDestroy() { 
            super.onDestroy(); 
            System.out.println("执行 onDestroy()"); 
        }    
       
    }

     

    main.xml如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <RelativeLayout  
        xmlns:android="http://schemas.android.com/apk/res/android" 
        xmlns:tools="http://schemas.android.com/tools" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        
       
        <TextView 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:text="对于Back键的两种处理方法" 
            android:layout_centerInParent="true" 
            android:textSize="20sp" 
       /> 
       
    </RelativeLayout>
  • 相关阅读:
    ES6 Symbol类型 附带:Proxy和Set
    why updating the Real DOM is slow, what is Virtaul DOM, and how updating Virtual DOM increase the performance?
    React高级指南
    池(Pool)
    计算机网络Intro
    React基础
    CommonJS 与 ES6 的依赖操作方法(require、import)
    webpack初识(biaoyansu)
    关于时间安排贪心算法正确性的证明
    DP总结
  • 原文地址:https://www.cnblogs.com/ZhuRenWang/p/4881153.html
Copyright © 2011-2022 走看看