我有一个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
函数之后仍然可见。
当我用片段B替换片段A时,为什么片段A仍然可见?