欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android开发实现Fragment监听返回键事件功能的方法

程序员文章站 2023-11-13 13:34:16
本文实例讲述了android开发实现fragment监听返回键事件功能的方法。分享给大家供大家参考,具体如下: 前面的文章android开发教程之fragment定义、创...

本文实例讲述了android开发实现fragment监听返回键事件功能的方法。分享给大家供大家参考,具体如下:

前面的文章android开发教程之fragment定义、创建与使用方法详细讲述了fragment的基本概念与用法。这里再来分析一下fragment监听返回键事件的具体应用。

背景

项目要求用户注册成功后进入修改个人资料的页面,且不允许返回到上一个页面,资料修改完成后结束当前页面,进入app主页。

由于是使用多个fragment完成注册流程,就需要fragment监听用户点击手机上的返回按钮,查了一些资料,加上自己使用过程中发现的问题,特此记录,帮助更多有此需求的朋友

代码实现

xxx_fragment
@override
public void onresume() {
    super.onresume();
    getfocus();
}
//主界面获取焦点
private void getfocus() {
    getview().setfocusableintouchmode(true);
    getview().requestfocus();
    getview().setonkeylistener(new view.onkeylistener() {
      @override
      public boolean onkey(view v, int keycode, keyevent event) {
        if (event.getaction() == keyevent.action_up && keycode == keyevent.keycode_back) {
          // 监听到返回按钮点击事件
          ......
          return true;
        }
        return false;
      }
    });
}

以上代码是*.com中找到的一个解决方案,但是在使用时,由于fragment页面里可能有其他能获取焦点的view(例如edittext),会导致监听失效,点击返回键会返回到上个页面。

更完善的解决方案:

除了上面的代码,我们需要对可以获取焦点的view的setonkeylistener进行处理,这里以一个edittext为例:

//private edittext nickname;
nickname.setonkeylistener(new view.onkeylistener() {
  @override
  public boolean onkey(view v, int keycode, keyevent event) {
    if (keycode == keyevent.keycode_back
        && event.getaction() == keyevent.action_up) {
      //关闭软键盘
      inputmethodmanager imm = (inputmethodmanager) getactivity().getsystemservice(context.input_method_service);
      imm.hidesoftinputfromwindow(nickname.getwindowtoken(), 0);
      //使得根view重新获取焦点,以监听返回键
      getfocus();
    }
    return false;
  }
});

更多关于android相关内容感兴趣的读者可查看本站专题:《android基本组件用法总结》、《android开发入门与进阶教程》、《android布局layout技巧总结》、《android视图view技巧总结》、《android编程之activity操作技巧总结》、《android资源操作技巧汇总》及《android控件用法总结

希望本文所述对大家android程序设计有所帮助。