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"){

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

}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值