按下后退时从 activity 管理片段代码

Managing fragment code from activity when back pressed

我有一个Activity,它的布局是一个片段,可以由不同的片段类填充。问题是,当我在 Fragment X 中并按回键时,我想重写 onBackPressed 方法以执行询问用户是否保存输入数据的方法。但是,问题是onBackPressed只能从activity覆盖,那么我的问题是:

我应该在 Fragment X 中创建一个 public 方法并从覆盖的 onBackPressed 方法中调用它,还是应该使用接口或其他任何方法?

我已经检查了其他相关帖子,例如如何使用 addToBackStack 返回到上一个片段而不丢失数据,但我认为这是一个不同的问题..

当我想做类似的事情时,我为片段创建了标签,并在父 activity 中创建了一个名为 mCurrentFragment 的片段对象。每次加载片段时,我都会将其分配给 mCurrentFragment。所以我会覆盖 activity 中的 onbackPressed() ,然后检查片段实例:

@Override
public void onBackPressed() {
    if (mCurrentFragment instanceof FragmentA) {
        //Do something
        //e.g. mCurrentFragment.save();
    } else if (mCurrentFragment instanceof FragmentB) {
        //Do something else
    } else {
        super.onBackPressed()
    }
}

如果你想从一个片段中调用一个方法,你只需使用你创建的片段对象(在我的例子中是 mCurrentFragment)并访问它的所有 public 方法(如 FragmentA 的示例以上)

§已编辑以包含评论中的代码