我创建了一个对话框 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/