Android 显示DialogFragment让我很困惑

Android 显示DialogFragment让我很困惑,android,android-fragments,android-dialogfragment,Android,Android Fragments,Android Dialogfragment,我正在复习功课。让我有点困惑的是: void showDialog() { mStackLevel++; // DialogFragment.show() will take care of adding the fragment // in a transaction. We also want to remove any currently showing // dialog, so make our own transaction and take ca

我正在复习功课。让我有点困惑的是:

void showDialog() {
    mStackLevel++;

    // DialogFragment.show() will take care of adding the fragment
    // in a transaction.  We also want to remove any currently showing
    // dialog, so make our own transaction and take care of that here.
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    Fragment prev = getFragmentManager().findFragmentByTag("dialog");
    if (prev != null) {
        ft.remove(prev);
    }
    ft.addToBackStack(null);

    // Create and show the dialog.
    DialogFragment newFragment = MyDialogFragment.newInstance(mStackLevel);
    newFragment.show(ft, "dialog");
}  
因此,我的困惑源于这样一个事实:他们使用的是
findFragmentByTag(“dialog”)
。声明的布局XML中没有名为
dialog
的标记。对于普通碎片,布局中有
标记,因此我可以使用Id或标记名检索碎片。这里没有

那么,有什么好处呢?这是如何工作的?
另外,如果我有多个
对话框片段
<代码>findFragmentByTag(“对话框”)将返回什么


:)

可以通过两种方式将片段附加到活动:通过使用
标记在布局xml中声明它来静态地附加到活动;或者通过编程方式使用
FragmentManager
FragmentTransaction
。对于DialogFragments,您将始终使用后者


当您将片段附加到活动时,例如通过使用,您可以给它一个标记。随后,
FragmentManager
可以通过其标记找到该片段。在本例中,代码正在检查
FragmentManager
是否已经有一个带有此标记的片段(如果调用
showDialog()
时对话框已经显示,我相信会出现这种情况)。如果是这样,它会在显示新的片段实例之前删除片段(取消对话框)。

另外,我如何使用support DialogFragment实现这一点?因此,这个“标记”更像是一个键值对,而不是一个XML标记您可以这样想。