使用 onCreateDialog 创建的 DialogFragment 在创建时不被视为可见。

4

(使用兼容性库)

我用DialogFragment实现了一个对话框。 在onCreateDialog中使用AlertDialog.Builder创建对话框(不使用onCreateView)。

在我的碎片中,我使用以下代码调用对话框:

dlg.show(getFragmentManager(), tag);

然而,当我检查可见性时,一旦对话框清晰可见,使用
dlg.isVisible();

这会返回false。

现在以下是兼容性源代码中的Fragment::isVisible代码。

final public boolean isVisible() {
    return isAdded() && !isHidden() && mView != null
            && mView.getWindowToken() != null && mView.getVisibility() == View.VISIBLE;
}

该调用返回false,因为mView为空,因为该视图未附加到窗口。

有任何想法应该如何调用对话框,或者创建它,以便它附加到片段的根视图?或者我应该如何检查可见性?

提前致谢,Peter。


我已经通过在我的DialogFragment子类中添加自己的visible()方法并在onCreateDialog(...)中调用返回的AlertDialog上的'isShowing()'来解决了这个问题。但我肯定不应该这样做。 - PJL
现在,您能够检测 DialogFragment 是否正在显示吗?可以更新答案吗? - Huy Tower
我提供的答案需要更新吗? - PJL
1个回答

4
您可以通过以下函数确定对话框片段是否正在显示:
boolean isShowing(DialogFragment dlg)
{
   return dlg.getDialog() != null;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接