的返回键 监听android_android只监听返回键不监听删除键 - CSDN
精华内容
参与话题
  • Android 返回键监听

    千次阅读 2019-01-16 17:59:27
    @Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { finish(); overridePendin...
    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
            finish();
            overridePendingTransition(R.anim.no_animation, R.anim.push_bottom_out);
            //不执行父类点击事件
            return true;
        }
        //继续执行父类其他点击事件  
        return super.onKeyUp(keyCode, event);
    }
    展开全文
  • Android常用之返回按键监听

    千次阅读 2018-02-12 11:07:40
    如果没有对返回键设置监听,通常按下一次返回键就会退出程序或退出某个界面,这样是很不人性化的,我们可以有两种处理方式: 按下返回键时弹出一个对话框(AlertDialog),再让用户选择是否退出 双击返回退出 下面分别...

    在安卓开发中,我们经常要对按键进行监听,今天跟大家分享一下最常用的按下返回退出功能的实现.
    如果没有对返回键设置监听,通常按下一次返回键就会退出程序或退出某个界面,这样是很不人性化的,我们可以有两种处理方式:

    • 按下返回键时弹出一个对话框(AlertDialog),再让用户选择是否退出
    • 双击返回退出

    下面分别介绍着两种实现方式

    1. 按下返回键时弹出一个对话框(AlertDialog),再让用户选择是否退出

    实现思路:

    • 重写onKeyDown方法
    • 在方法中,判断返回按键被按下的时候创建一个对话框并显示
    • 给对话框的按钮设置点击监听

    代码示例:

    //重写onKeyDown方法,对按键(不一定是返回按键)监听
    public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {//当返回按键被按下
                AlertDialog.Builder dialog = new AlertDialog.Builder(context);//新建一个对话框
                dialog.setMessage("确定要退出测试吗?");//设置提示信息
                //设置确定按钮并监听
                dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        finish();//结束当前Activity
                    }
                });
                //设置取消按钮并监听
                dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                    //这里什么也不用做
                    }
                });
                dialog.show();//最后不要忘记把对话框显示出来
            }
            return false;
        }

    这样,就实现了点击返回按键时弹出对话框,并交由用户处理退出的功能

    2.双击返回退出

    实现思路:

    • 重写onKeyDown方法
    • 声明一个全局的布尔值isExit,默认为false
    • 第一次点击返回按键时,弹出Toast提示,并调用exit()方法
    • exit()方法中,判断isExit值,并执行相应逻辑(具体看代码吧,原谅我真不知道怎么描述了……)

    代码示例:

    //声明一个全局布尔值,默认为false
    public boolean isExit = false;
    
    //重写onKeyDown方法,
    public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {//当返回按键被按下
            //调用exit()方法
            exit();
            }
            return false;
        }
    
    //被调用的exit()方法
    private void exit() {
            Timer timer;//声明一个定时器
            if (!isexit) {  //如果isExit为false,执行下面代码
                isexit = true;  //改变值为true
                Toast.makeText(TestActivity.this, "再按一次退出测试", Toast.LENGTH_SHORT).show();  //弹出提示
                timer = new Timer();  //得到定时器对象
                //执行定时任务,两秒内如果没有再次按下,把isExit值恢复为false,再次按下返回键时依然会进入if这段代码
                timer.schedule(new TimerTask() {  
                    @Override
                    public void run() {
                        isexit = false;
                    }
                }, 2000);
            } else {//如果两秒内再次按下了返回键,这时isExit的值已经在第一次按下时赋值为true了,因此不会进入if后的代码,直接执行下面的代码
                finish();
            }
        }

    嗯,就这样,双击退出的功能也实现了,如果看不懂,建议大家自己写一遍就能明白逻辑了.

    展开全文
  • android返回键监听

    万次阅读 2015-07-15 10:17:53
    android中对返回键监听相对比较简单,方法也比较多,可分别通过重写  dispatchKeyEvent(KeyEvent event)、onKeyDown(int keyCode, KeyEvent event)、onKeyUp(int keyCode, KeyEvent event)和onBackPressed()...
            android中对返回键的监听相对比较简单,方法也比较多,可分别通过重写
    
    

    dispatchKeyEvent(KeyEvent event)、onKeyDown(int keyCode, KeyEvent event)、onKeyUp(int keyCode, KeyEvent event)和onBackPressed() 方法监听返回键,但是这四种方法有一个严格的执行顺序,如果同时重写了以上四种方法,则Toast显示的信息依次是:dispatchKeyEvent--Down、onKeyDown、dispatchKeyEvent--UP、onKeyUp、onBackPressed。示例如下:

    1、通过dispatchKeyEvent方法

            @Override
    	public boolean dispatchKeyEvent(KeyEvent event) {
    		if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {//点击的是返回键
    			if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {//按键的按下事件
    				Toast.makeText(getApplicationContext(), "dispatchKeyEvent--Down", Toast.LENGTH_SHORT).show();
    //				 return false;
    			} else if (event.getAction() == KeyEvent.ACTION_UP && event.getRepeatCount() == 0) {//按键的抬起事件
    				Toast.makeText(getApplicationContext(), "dispatchKeyEvent--UP", Toast.LENGTH_SHORT).show();
    //				 return false;
    			}
    		}
    		return super.dispatchKeyEvent(event);
    	}

         注:如果在此方法的按下事件中返回了true或false,而不是返回了return super.dispatchKeyEvent(event),则方法2、3、4将得不到执行,只会再次执行此方法的抬起事件(此方法执行两次),同时也不会执行页面的返回操作;如果在此方法中的抬起事件中返回了true或false,而不是返回了return super.dispatchKeyEvent(event),则方法3、4得不到执行,此方法一共执行两次,同时也不会执行页面的返回操作。

    2、onKeyDown方法

            @Override
    	public boolean onKeyDown(int keyCode, KeyEvent event) {
    		if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
    			Toast.makeText(getApplicationContext(), "onKeyDown", Toast.LENGTH_SHORT).show();
    		}
    		return super.onKeyDown(keyCode, event);
    	}        

        注:如果在此方法中返回了true或false,而不是返回了super.onKeyDown(keyCode, event),则方法4将得不到执行,同时也不会执行页面的返回操作。

    3、onKeyUp方法

            @Override
    	public boolean onKeyUp(int keyCode, KeyEvent event) {
    		if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
    			Toast.makeText(getApplicationContext(), "onKeyUp", Toast.LENGTH_SHORT).show();
    		}
    		return super.onKeyUp(keyCode, event);
    	}

     注:如果在此方法中返回了true或false,而不是返回了super.onKeyUp(keyCode, event),则方法4将得不到执行,同时也不会执行页面的返回操作。

    4、onBackPressed()方法

            @Override
    	public void onBackPressed() {
    		Toast.makeText(getApplicationContext(), "onBackPressed", Toast.LENGTH_SHORT).show();
    		super.onBackPressed();
    	}
    注:如果在此方法中不调用super.onBackPressed()方法,则不会执行页面的返回操作。



    展开全文
  • Android应用中返回键监听及处理

    万次阅读 2016-10-29 16:31:47
    MainActivity如下: package com.testnbackpressed; import android.os.Bundle; import android.view.KeyEvent; import android.app.Activity; /** * Demo描述: * 处理Back

    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 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如下:

    <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>  
    展开全文
  • Android 回退键监听

    万次阅读 2017-11-17 17:49:21
    Android 回退键监听回退键(back)监听:方法1:回调方法onBackPressed 方法2:回调方法onKeyDown 方法3:回调方法dispatchKeyEvent
  • android 设置返回键监听

    千次阅读 2015-10-24 20:45:15
    写一个 android APP,如果每次按下手机返回键,就会直接退出APP,这效果明显很糟糕(不小心会经常触发)。 解决的办法:可以为手机返回键设置一个监听,并根据实际设计对应处理方法 例如: 在 activity 中添加...
  • android h5混合开发返回键监听

    千次阅读 2018-05-01 14:14:52
    android h5混合开发返回键监听 在混合开发的时候,android返回键默认每次按返回都是返回上一页,而有时候我们的需求并不是这样的,如果返回的界面是有弹窗的,那么我们点击返回键需求就是关闭弹窗,而不是返回上一...
  • Android监听手机返回键

    2017-08-25 09:58:18
    Android在做项目时,有时候点击返回按钮没反应(有冲突),那...// 监听手机返回键 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { PhotoShow.this.fin
  • android activity返回键监听

    千次阅读 2017-02-15 16:35:40
    两个方法: @Override  public boolean onKeyDown(int keyCode, KeyEvent event) {  // TODO Auto-generated method stub  switch (keyCode) {  case KeyEvent.KEYCODE_BACK:  
  • Android监听返回按键以及Home按键

    万次阅读 2018-07-02 18:35:19
    HomeKeyReceiver receiver;receiver = new ...// 注册监听HOME的广播 mParent.registerReceiver(receiver, new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); mParent.unregisterReceiver(receiver...
  • Android fragment监听返回键

    千次阅读 2020-05-23 14:30:25
    fragment需要监听返回键时分两种情况,一种是有其他控件获取了焦点,另一种是没有其他控件获得焦点。 先看第二种情况,代码如下: MyFragment.Java [java]view plaincopy print? ...@Overr
  • 官方文档提供的返回键监听方法document.addEventListener("backbutton", onBackKeyDown, false);function onBackKeyDown(e) {} 使用中发现 监听 只能进行 一次监听,否则会多次执行, 并且 采用单页面应用SPA开发 ...
  • 1、如果只想阻止“返回键”关闭Dialog最简单的setCancelable(false) 2、最简单的方法重载Activity的OnKeyDown()方法,捕捉想要屏蔽的按键: public boolean onKeyDown(int keyCode, KeyEvent event) { // ...
  • PopupWindow监听返回键

    热门讨论 2020-07-30 23:30:32
    本人亲测的PopupWindow监听返回键,可以监听返回键的状态,动态设置返回键dismiss的时机
  • 问题:H5页面的返回键可以回退到指定页面,但是Android手机的物理返回键会回到上一页。 解决办法:以下代码可以实现,Android返回键时调用H5的方法(下面代码中用的是H5的GoBackUrl方法),实现跳转到指定页面。 ...
  • android webview 返回键监听

    千次阅读 2017-06-02 16:31:16
    @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) ) { if (webview.canGoBack()) { webview.goBack(); //goBack()表示返回
  • 转载自:...    android中对返回键监听相对比较简单,方法也比较多,可分别通过重写  dispatchKeyEvent(KeyEvent event)、onKeyDown(int keyCode, KeyEvent event)、onKeyUp(int keyC...
  • 前端工作爬坑日记(一):js监听Android手机物理返回按键功能需求描述实现逻辑实现代码参考资料结语 功能需求描述 在工作开发过程中,遇见一个功能需求,要求在页面A.html对Android手机的物理返回按键进行监听,当...
  • Android Fragment 监听返回键

    千次阅读 2018-09-04 09:17:06
    直接给代码*-* Fragment: public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK)) { //执行操作 ((MainActivity) Objects....
1 2 3 4 5 ... 20
收藏数 27,142
精华内容 10,856
关键字:

的返回键 监听android