0

我有一个Activity主机很多Fragments。在Fragment A中,当用户按下后退按钮询问他们是否确定是否要离开此片段时,我正在添加一个对话框。我在 Activity 中添加了这段代码onBackPressed来控制它:

@Override
public void onBackPressed() {
    FragmentA fragmentA = (FragmentA) getSupportFragmentManager().findFragmentByTag("fragmentA");

    if (fragmentA != null && fragmentA.isVisible()) {
        fragmentA.showExitDialog();
        return;
    }
    else { super.onBackPressed(); }
}

并且对话框在片段 A 中完美运行,但是当它离开片段 A 并使用以下代码进入片段 B(相同的活动)时:

getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.container, 
                FragmentB.newInstance(), "fragmentB").commit();

然后我按下片段 B 中的后退按钮,它再次显示相同的退出对话框。

因此,从我的代码中可以看出 FragmentA 不是 null 并且即使在我执行该Replace函数之后仍然可见。

为什么用 Fragment B 替换 Fragment A 仍然可见?

4

0 回答 0