android - 为什么我的后退按钮在关闭对话框 fragment 后不能正常工作

标签 android back-button android-dialogfragment

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

然后当我按下后退按钮时,对话框 fragment 消失了(我不确定它是否只是隐藏或什么) 此外,这仅在使用 ft.add() 和 ft.show().commit() 时发生;

如果我使用下面的代码而不是 ft.add().show().commit() 它可以正常工作。

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

希望这里有人可以提供帮助,在此先感谢。

最佳答案

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

关于android - 为什么我的后退按钮在关闭对话框 fragment 后不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14737206/

相关文章:

android - DialogFragment.onDismiss()中的空指针异常

android - 如何创建这个切换按钮?

http - ELM-LANG 如何在单击浏览器后退按钮时发出 http 请求

android - Android 中的 DialogFragment 位置

android - 重新创建 Activity 或只是从任务中获取它?

android - 在 android 中显示键盘时不调整 DialogFragment 的大小

android - 改造 2 : upload image to server and get strange response

java - 音乐 ListView 无法在 4.4 或更高版本上运行?

android - 通过 TextView 打开默认短信应用程序