1

我创建了一个对话框片段,然后当我按下它时它被关闭。不幸的是,当我再次按下后退按钮时,什么也没有发生(应该发生的是我应该离开这个活动并转到上一个活动)。怎么可能?当我关闭片段(使用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");

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

4

1 回答 1

1

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

于 2013-02-18T16:34:56.517 回答