我有一个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 仍然可见?