标签: Fragment Android
【作者:kidou】
【原文链接:https://www.jianshu.com/p/fff1ef649fc0】
【Github:https://github.com/ikidou/FragmentBackHandler】
用法:
添加依赖
allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
}
}
dependencies {
compile 'com.github.ikidou:FragmentBackHandler:2.1'
}
- 在Activity中覆盖
onBackPressed()
方法
public class MyActivity extends FragmentActivity {
@Override
public void onBackPressed() {
if (!BackHandlerHelper.handleBackPress(this)) {
super.onBackPressed();
}
}
}
- 实现
FragmentBackHandler
public class MyFragment extends Fragment implements FragmentBackHandler {
@Override
public boolean onBackPressed() {
if (handleBackPressed) {
//外理返回键
return true;
} else {
// 如果不包含子Fragment
// 或子Fragment没有外理back需求
// 可如直接 return false;
// 注:如果Fragment/Activity 中可以使用ViewPager 代替 this
//
return BackHandlerHelper.handleBackPress(this);
}
}
}
或让需要拦截Back键的Fragment及父Fragment继承BackHandledFragment
// [推荐] 适合所有Fragment,只要需要栏截时return true即可,其它的无需关心。
// 当然你也可以让你的BaseFragment 继承 BackHandledFragment
public class MyFragment extends BackHandledFragment {
// 如果return false 将自动调用 BackHandlerHelper.handleBackPress(this);
@Override
public boolean interceptBackPressed() {
if (handleBackPressed) {
//外理返回键
return true;
} else {
return false;
}
}
// 如果ViewPager中需要栏截back,可覆盖该方法。
// 非必须,从2.1版本开始,即何使用了ViewPager也没有问题
@Override
public ViewPager getBackHandleViewPager() {
return null;
}
}