Android 如何将同一个DialogFragment显示两次或更多次

Android 如何将同一个DialogFragment显示两次或更多次,android,android-dialogfragment,Android,Android Dialogfragment,我的应用程序有一个按钮,当用户按下按钮时,它会显示一个自定义的对话框片段。对话框片段如下所示: if(searchDialog == null) { searchDialog = new SearchElementDialog(); searchDialog.setOnItemClickListener(searchElementItemClickListener); } searchDialog.show (getFragmen

我的应用程序有一个按钮,当用户按下按钮时,它会显示一个自定义的
对话框片段。
对话框片段
如下所示:

    if(searchDialog == null)
    {
        searchDialog = new SearchElementDialog();
        searchDialog.setOnItemClickListener(searchElementItemClickListener);
    }

    searchDialog.show (getFragmentManager(), "SearchElement");
当用户完成时,将以通常的方式调用
disclose
,并删除该对话框。现在,当用户再次按下同一按钮时,我希望以与用户离开时相同的可见状态显示相同的对话框,调用上面第一个块中的代码确实会显示对话框,并且其可见状态会恢复,但是:

屏幕不会变暗,在对话框外按也不会关闭它,其后面的控件也不会响应

当软键盘进入视图时,对话框不会移动


一开始一切都很好。无法再次显示同一个对话框实例吗?

如果隐藏并显示对话框而不是整个片段会怎么样

当您要取消呼叫时:

searchDialog.getDialog().dismiss();
当你想展示它时:

searchDialog.getDialog().show();

西马斯部分是对的<当显示
对话框时,code>getDialog()
不会返回
null
,但当没有显示
对话框时会返回。我将其存储为类中的字段

mDialog=getDialog()

并随后致电

mDialog.show()


每次都有效。

恐怕不行。getDialog返回null,除非该对话框已经可见,因此我无法使用它调用show。如果我调用getDialog().Disease()和searchDialog.show(),结果是一样的。@CurlyPaul是的,当你实例化它时,它会自动显示,但是当你用
getDialog().Disease()
隐藏时,我很确定你以后可以用
getDialog.show()
来显示它。