问题是,如果我使用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()做一些额外的工作来以预期的方式关闭对话框。

09-25 17:18