gpt4 book ai didi

android - 显示 DialogFragment 让我感到困惑

转载 作者:行者123 更新时间:2023-11-29 17:57:51 27 4
gpt4 key购买 nike

我正在查看 official Android tutorial for DialogFragments .让我有点困惑的部分是:

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 的标签。在里面。如果是普通的 fragment ,则有 <fragment ../>布局中的标签,以便我可以检索具有 ID 或标签名的 fragment 。在这里,没有。

那么,是什么给了?这是如何工作的?
另外,如果我有多个 DialogFragments 怎么办? ? findFragmentByTag("dialog");会返回什么??

:)

最佳答案

Fragments 可以通过两种方式附加到 Activity:静态地通过使用 <fragment> 在布局 xml 中声明它标签;或以编程方式使用 FragmentManagerFragmentTransaction .对于 DialogFragments,您将始终使用后者。

当您将 fragment 附加到 Activity 时,例如使用 DialogFragment.show() ,你可以给它一个标签。 FragmentManager然后可以通过其标签找到该 fragment 。在这种情况下,代码正在检查是否 FragmentManager已经有一个带有此标签的 fragment (我相信如果调用 showDialog() 时对话框已经显示,情况就会如此)。如果是这样,它会在显示 fragment 的新实例之前删除该 fragment (关闭对话框)。

关于android - 显示 DialogFragment 让我感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18030308/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com