在解除对话框片段后,为什么我的后退按钮不能正常工作

时间:2013-02-06 19:30:11

标签: android back-button android-dialogfragment

我创建了一个对话框片段然后当我按下它时它被解雇了。不幸的是,当我再次按下后退按钮时没有任何事情发生(应该发生的事情是我应该离开这个活动并转到前一个)。怎么可能?当我解散片段时(使用dismiss()或后退按钮)它不应该再按下我的后退按钮了(我不确定它是否捕获了那个事件)。

有人能说出错误是什么吗?

以下代码

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

    Fragment prev = getSupportFragmentManager().findFragmentByTag(
            "File Browser Fragmnent");
    if (prev != null) {
        ft.remove(prev);
    }
    ft.addToBackStack(null);
    FileBrowseDialog dialog = FileBrowseDialog.newInstance(currentVideoId);
    if (dialog.getDialog() != null)
        dialog.getDialog().setCanceledOnTouchOutside(true);
    dialog.setCancelable(true);

    if(darkenedOverlay != null && darkenedOverlay.getVisibility() != View.VISIBLE)
        darkenedOverlay.setVisibility(View.VISIBLE);
    ft.add(dialog, "File Browser Fragmnent");
    ft.show(dialog).commit();

然后当我按下后退按钮时,对话框片段消失了(我不确定它是否只是隐藏或是什么) 这也只有在使用ft.add()和ft.show()。commit();

时才会发生

如果我使用下面的代码而不是ft.add()。show()。commit()它没有问题。

dialog.show(ft, "File Browser Fragment");

希望有人可以提供帮助,并提前感谢。

1 个答案:

答案 0 :(得分:1)

我发现了为什么会这样。之所以会发生这种情况,是因为我使用addToBackstack,它基本上撤消了最后一个事务(创建对话框)。如果我删除addToBackstack我后面的按钮不再有问题。