android fragment返回按钮,两步搞定Fragment返回键

本文介绍了一种处理Android Fragment回退键的简洁方法,通过实现FragmentBackHandler接口和使用BackHandlerHelper工具类,无需手动管理Fragment实例,支持多Fragment和嵌套Fragment的情况。只需在Activity的onBackPressed方法中调用BackHandlerHelper.handleBackPress即可。
摘要由CSDN通过智能技术生成

Fragment可以说是在Android开发必需要使用到技术,项目中的界面基本上都是使用Fragment来实现,而Activity只是作为Fragment的载体,但有些特殊情况下Fragment也不得不处理Back键,如果是Activity的话还好说,直接覆盖 Activity的onBackPressed 即可,但Fragment可就没有这么幸运了,你可能和我一样,最开始有这样的需求的时候都会想去覆盖Fragment的onBackPressed方法,但是事与愿违,Fragment中并没有这样的方法,不仅如此,Fragment也没有更不可能有onKeyDown、onKeyUp这样的方法,那么Fragment如何处理back键成难题。

在此之前先卖个关子看看别人都是怎么实现的,看过的该方式的同学可以直接到最后。

别人的实现方式

注:出自优雅的让Fragment监听返回键

1、定义一个BackHandledInterface

public interface BackHandledInterface {

public abstract void setSelectedFragment(BackHandledFragment selectedFragment);

}

2、定义一个BackHandledFragment 抽象类继承Fragment并提供一个onBackPressed方法,所有的Fragment都派生自该类

public abstract class BackHandledFragment extends Fragment {

protected BackHandledInterface mBackHandledInterface;

protected abstract boolean onBackPressed();

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

if(!(getActivity() instanceof BackHandledInterface)){

throw new ClassCastException("Hosting Activity must implement BackHandledInterface");

}else{

this.mBackHandledInterface = (BackHandledInterface)getActivity();

}

}

@Override

public void onStart() {

super.onStart();

mBackHandledInterface.setSelectedFragment(this);

}

}

3、Activity实现第一步中

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值