Android 监听系统返回键实现Fragment返回上一级

Android  监听系统返回键实现Fragment返回上一级

项目需求:在Fragment页面监听系统返回键实现返回上一级Fragment页面
项目场景:Fragment多层嵌套导致导致在第二级Fragment点击系统返回键直接退出最外层

百度好多家博主都po了通过接口回调的方式在BaseFragment中定义onBackListener接口  在最外层activity(也就是多层Fragment外壳)监听系统返回键 然后Fragment继承BaseFragment拿到Activity的监听事件  觉得很麻烦  不过本博主也不是望而生怯的人  自己试了试接口回调的方式   没有实现返回上一级的需求。。。。。就试着自己的思路来写  以下为本人实现思路  我的Fragment上下级使用的容器是FrameLayout
 

实现方式:

1--->最外层activity实现onBackPress方法(注:有些时候onBackPress方法没有onKeyDown方法好用  当然如有有监听事件冲突的话 要使用dispatchKeyEvent方法 )  
2--->监听点击事件为返回键->Back_event  在这里判断当前Fragment是否为需要处理返回上一级逻辑的Fragment

3--->如果是  通过EventBus传递判断方法->EventBus.getDefault().post("event")

4-->需处理上一级逻辑Fragment注册EventBus  并接收事件进行判断


po上代码最为直观

//最外层Fragment监听返回事件

@Override
public void onBackPressed(){
  super.onBackPressed()
  if(mCurrentFragment==目标Fragment){
     EventBus.getDefault().post("chargeBack");
  }else{
     finish()
  }
}
//目标Fragment


//注册EventBus
override fun onResume(){
 EventBus.getDefault().register(this)
}

//EventBus接收事件
@Subscribe(threadMode==ThreadMode.Main)
fun onEvent(mStr : String) {
  if(mStr=="chargeBack"){

//这里自行添加返回上一级逻辑 
  
  }

}

以上  为我的实现方式   自认为相比于定义接口简单多些   当然  如有疑问  欢迎指出

你可能感兴趣的:(Android,android,kotlin)