我创建了一个对话框片段然后当我按下它时它被解雇了。不幸的是,当我再次按下后退按钮时没有任何事情发生(应该发生的事情是我应该离开这个活动并转到前一个)。怎么可能?当我解散片段时(使用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");
希望有人可以提供帮助,并提前感谢。
答案 0 :(得分:1)
我发现了为什么会这样。之所以会发生这种情况,是因为我使用addToBackstack,它基本上撤消了最后一个事务(创建对话框)。如果我删除addToBackstack我后面的按钮不再有问题。