博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
优雅的实现Fragment监听返回键
阅读量:5914 次
发布时间:2019-06-19

本文共 1261 字,大约阅读时间需要 4 分钟。

onKeyDown

Activity可以通过重写onKeyDown(int keyCode, KeyEvent event),很容易的监听物理返回键事件,而Fragment并不能重写物理键监听事件。在一个Activity多个Fragment页面的应用中,很多时候有必要的监听每个Fragment返回事件,并对每个Fragment做特殊的数据处理。如果将每个Fragment的返回事件都在FragmentActivity中监听消费,那么其onBackPressed()的代码将会比较混乱;

Activity的onKeyDown

    @Override   public boolean onKeyDown(int keyCode, KeyEvent event) {
      if (keyCode == KeyEvent.KEYCODE_BACK) {//按下返回键           moveTaskToBack(false);//让程序进入后台但不销毁 这里写自己的逻辑代码就可以了           return true;//消费了返回事件       }       return super.onKeyDown(keyCode, event);   } 复制代码

返回 true 表示已经消耗了返回的时间,返回false表示没有消耗,依旧会执行返回。

Fragment的onKeyDown

    @Override     public void onResume() {
        super.onResume();         getView().setFocusableInTouchMode(true);         getView().requestFocus();         getView().setOnKeyListener(new View.OnKeyListener() {
            @Override             public boolean onKey(View view, int keyCode, KeyEvent keyEvent) {
                if (keyCode == KeyEvent.KEYCODE_BACK && keyEvent.getAction() == KeyEvent.ACTION_UP) {
          //拦截到的返回事件                     return true;                 }                 return false;             }         });     } 复制代码

getView返回的就是你的根布局view,setFocusable这个是用键盘是否能获得焦点,setFocusableInTouchMode这个是触摸是否能获得焦点。

转载地址:http://zcwvx.baihongyu.com/

你可能感兴趣的文章
hibernate一级缓存和二级缓存的区别
查看>>
技术公众号
查看>>
[转] Linux下使用PyInstaller打包Python程序
查看>>
ubuntu 13.10下设立使用双拼/谷歌拼音等输入法(安装fcitx)
查看>>
GROUP BY GROUPING SETS
查看>>
简单笔记
查看>>
Object NSLog
查看>>
python小知识点总结
查看>>
我的核心价值观
查看>>
1041
查看>>
《SqlServer 系列》 - 动态执行t-sql
查看>>
libcurl CURLcode
查看>>
阿里云 Ubuntu14.04安装PHP+MySQL+Apache
查看>>
sftp 限制用户登陆指定目录
查看>>
制造业云ERP软件项目实施风险管理
查看>>
简易连接池
查看>>
《史密斯奶奶》用什么开发的?
查看>>
修复Linux Mint损坏的依赖
查看>>
(转)SVN:冲突解决 合并别人的修改
查看>>
递归实现中序遍历二叉树
查看>>