更换Fragment后,Activity仍会检测到片段是否可见

时间:2014-06-09 18:56:20

标签: android android-fragments fragmenttransaction fragmentmanager

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

0 个答案:

没有答案