Skip to content

onBackPressed拦截

JingYeoh edited this page Apr 23, 2018 · 2 revisions

本框架对Fragment的出栈操作是通过onBackPressed方法的,但是在某些时候,我们需要拦截这个方法并进行一些额外的处理,本框架对这种场景提供了支持。

一、v1.3.0版本之后

v1.3.0版本对于onBackPressed方法进行了重新设计,支持了所有场景下的Fragment

主要包括如下两个方法:

  • boolean onInterruptBackPressed()
    • 是否拦截继续向子Fragment传递onInterruptBackPressed()方法。
  • boolean onRiggerBackPressed()
    • 是否拦截继续向上层传递onRiggerBackPressed()方法。

1、拦截onBackPressed方法不传递到子Fragments中。

Activity/Fragment中重写如下方法。

public boolean onInterruptBackPressed(){
   //需要拦截,则返回true,否则返回false
   return true;
}

2、拦截onBackPressed方法是否生效。

Activity/Fragment中重写如下方法。

public boolean onRiggerBackPressed(){
   //需要拦截,则返回true,否则返回false
   return true;
}

详细Wiki会在以后补充,暂请参照 Demo

二、v1.3.0版本之前

在你需要拦截的类中声明一个public的无参的方法名为onRiggerBackPressed的方法。

@Puppet
public class TestFragment extent Fragment{
  public void onRiggerBackPressed(){
    //Rigger.getRigger(this).onBackPressed();
    //如果需要拦截返回键,不要写上行代码,上行代码可以手动调用onBackPressed方法。
  }
}

如果写了onRiggerBackPressed方法,则默认会调用该方法,如果需要调用默认的返回操作,在该方法中调用Rigger.getRigger(this).onBackPressed()即可。