Skip to content

6. 使用场景- Back键的事件传递机制

YoKey edited this page Nov 25, 2016 · 1 revision

Fragmentation库提供一个类似Android事件分发机制的Back键监听机制:

按下Back键,事件首先传递到Activity内栈顶的Fragment,如果该Fragment有子Fragment,则传递到子栈内的栈顶子Fragment,依次类推;

如果栈顶子Fragment不处理该事件,则向上传递(栈底还有子Fragment则向栈底传递,如果没有则向父Fragment传递,最终到SupportActivity)

如果处理该事件,则消费该事件,不再向上传递。

  • 对于SupportActivity

注意:请不要复写onBackPressed()方法,改为复写onBackPressedSupport();

// 任意Fragment的onBackPressedSupport()返回true,该方法都不会被回调
@Override
public void onBackPressedSupport() {
    // super的实现为:
    // if (getSupportFragmentManager().getBackStackEntryCount() > 1) {
    //     mFragmentation.back(getSupportFragmentManager());
    // } else {
    //     finish();
    // }
    super.onBackPressedSupport();
}
  • 对于SupportFragment

如果return true,则消费该事件,不再向上传递。

@Override
public boolean onBackPressedSupport() {
    // 默认flase,继续向上传递
    return super.onBackPressedSupport();
}