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标记您可以这样想。