[转]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>

时间: 2024-10-14 03:54:07

[转]Android应用中返回键的监听及处理的相关文章

Android应用中返回键的监听及处理

MainActivity如下: package com.testnbackpressed; import android.os.Bundle; import android.view.KeyEvent; import android.app.Activity; /** * Demo描述: * 处理Back键按下事件 * * 注意事项: * 以下两种方法勿一起使用 */ public class MainActivity extends Activity { @Override protected

【Android】各式各样的弹出框与对菜单键、返回键的监听

Android自带各式各样的弹出框,弹出框也是安卓基本的组件之一.同时安卓程序可以对菜单键.返回键的监听,但在安卓4.0之后就禁止对Home键的屏蔽与监听,强制保留为系统守护按键,如果非要对Home键的屏蔽与监听,就会出现java.lang.IllegalArgumentException: Window type can not be changed after the window is added.的错误. 下面写一个小程序,来说明Android各式各样的弹出框,同时,安卓是如何对菜单键.

TabActivity 返回键 onBackPressed 监听 dispatchKeyEvent 监听

TabActivity 返回键 onBackPressed 监听  dispatchKeyEvent 监听 早上碰到TabActivity 返回键的监听事件,出现各种问题.瞎忙了一早上,最后google兼看文档终于找到解决的办法.下面结合别人,解决办法:我们知道,在普通的Activity中可以重写onKeyDown(intkeyCode, KeyEventevent)方法对手机按键进行监听,而当要监听的Activity为TabActivity时(其实ListActivity也一样),这个方法并不

(七)android开发中两种方式监听短信的原理和实现

一.监听短信的两种方式的简介 Android程序开发中,有两种方式监听短信内容:一.接收系统的短信广播:二.应用观察者模式,监听短信数据库. 第一种方式接收系统的短信广播: A.这种方式只对新收到的短消息有效,运行代码,并不会读取收件箱中已读或未读的消息,只有当收到新来的短消息时,才会执行onReceive()方法. B.并且这个广播是有序广播,如果当别的程序先读取到了这个广播,然后拦截掉了个这个广播,你将接收不到.当然我们可以通过设置priority的数值,其实有时是不管用的,现在在一些定制的

【Android】使用Intent调用系统其它程序,使用onKeyDown对音量键的监听,长按事件

Intent在安卓编程中非常常见,在<[Android]多个Activity之间利用bundle传递数值>(点击打开链接)中已经展示了它可以唤醒其它Activity并在Activity之间传递数据.其实Intent的作用远非于此,它还可以调用系统中其它固有程序,比如拨打电话.发送短信等.onKeyDown也是如此,不仅仅可以对设备的菜单键进行监听,这在<[Android]各式各样的弹出框与对菜单键.返回键的监听>(点击打开链接)中已经展示过的,对设备的音量调节键也是可以监听的, 下

Android点击返回键back时弹出对话框Dialog

public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { ExitDialog(MainActivity.this).show(); return true; } return super.onKeyDown(keyCode, event); } private Dialog ExitDialog

android的Home键的监听封装工具类(一)

android的Home键的监听封装: 1 package com.gzcivil.utils; 2 3 import android.content.BroadcastReceiver; 4 import android.content.Context; 5 import android.content.Intent; 6 import android.content.IntentFilter; 7 8 /** 9 * Home键监听封装 10 * 11 */ 12 public class

ios中键值编码kvc和键值监听kvo的特性及详解

总结: kvc键值编码  1.就是在oc中可以对属性进行动态读写(以往都是自己赋值属性)           2. 如果方法属性的关键字和需要数据中的关键字相同的话                  3. 动态设置:setValue:属性值 forKey:属性名(用于简单的路径)/setValue:属性值 forKeyPath:属性名(用于复杂的路径)kvo键值监听  永久性的监听item属性值的改变,如果改变就从新设置             1.监听方法:[addObserver:self

KVO键值监听

KVO 键值监听:当我想知道一个对象的属性是否发生改变的时候 做出响应,就需要添加监听keypath 和 key的区别keypath会自动寻找子类的属性key只会寻找当前类的属性添加键值监听[person addObserver:self forKeyPath:@“属性” options:.....] 当键值发生改变的时候调用-(void)obserValueForKeyPath:(NSString ) 底层实现:运行的时候 创建一个当前类的子类,重写子类的set方法 系统 建立了一个子类,然后