问题是,如果我使用FragmentsTransaction,onDismiss不会被触发:
FragmentTransaction transaction = getFragmentManager().beginTransaction();
// For a little polish, specify a transition animation
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
// To make it fullscreen, use the 'content' root view as the container
// for the fragment, which is always the root view for the activity
transaction.add(android.R.id.content, _dialogInfo).addToBackStack(null).commit();
但是如果我使用show(),则会调用onDismiss事件:
_dialogInfo.show(getFragmentManager(), DialogFragmentInfo.TAG);
onDismiss是在自定义DialogFragment上实现的,如下所示:
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
}
我不确定为什么会这样,因此我在文档中找不到任何解释。
最佳答案
在DialogFragment文档的“生命周期”部分中:
这意味着您应该使用show(FragmentManager,String)或
show(FragmentTransaction,String)添加DialogFragment的实例
到您的UI,因为这些跟踪DialogFragment应该如何删除
对话框关闭时本身。
大概show()
做一些额外的工作来以预期的方式关闭对话框。