Android Fragment 监听物理返回 back 键

在很多场景下,我们需要 Fragment 监听物理 back 键,而不是 Activity,这个时候我们只能做一些处理,来让 Fragment 拦截。

首先在 Fragment 中自定义回调方法,如下:

public boolean onBackPressed() {
    EventBus.getDefault().post(new ClosexxxxxEvent()); // 做我们想做的处理
    return true; // return true 代表自己处理
  }

然后,在 Activity 的 onBackPressed 方法中,进行相应的处理:

@Override
  public void onBackPressed() {
    if (mxxxxxxFragment == null) { // 获取到你的 Fragment 实例
      mxxxxxxFragment = (BaseFragment) getSupportFragmentManager()
          .findFragmentById(R.id.xxxxxx)
          .getChildFragmentManager().findFragmentById(R.id.xxxxx);
    }

    if (mxxxxxxFragment != null && mxxxxxxFragment instanceof xxxxxxFragment
        && !mxxxxxxFragment.isHidden()&& ((xxxxxxFragment) mxxxxxxFragment).onBackPressed()) { // 判断是否是我们需要的 Fragment
      return; // 拦截 Activity 的 back 监听
    }
    super.onBackPressed();
  }

完成!

——乐于分享,共同进步,欢迎补充
——Any comments greatly appreciated
——诚心欢迎各位交流讨论!QQ:1138517609
——CSDN:https://blog.csdn.net/u011489043
——简书:https://www.jianshu.com/u/4968682d58d1
——GitHub:https://github.com/selfconzrr

    原文作者:BugFree张瑞
    原文地址: https://www.jianshu.com/p/386a6e4b5d9c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞