2014-09-03 297 views
0

我的应用程序有一个按钮,当用户按下按钮时显示自定义DialogFragment。该DialogFragment是这个样子:如何显示相同的DialogFragment两次或更多

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

    searchDialog.show (getFragmentManager(), "SearchElement"); 

当用户完成dismiss被称为以通常的方式和对话被删除。现在,当用户再次按下相同的按钮时,我想要显示相同的对话框,与用户离开它时处于相同的可见状态,调用上面第一个块中的代码显示对话框并恢复其视觉状态,但:

屏幕不会变暗,并且在对话框外部按下不会消除它,并且它在对话框后面的控件也不会响应。

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

第一次显示一切都很好。是否不可能再次显示对话框的相同实例?

回答

1

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

当您想放弃的呼叫:

searchDialog.getDialog().dismiss(); 

,当你想要显示它:

searchDialog.getDialog().show(); 
+0

恐怕这是行不通的。 getDialog返回null,除非对话框已经可见,所以我不能用它来调用show。如果我调用getDialog()。dismiss()和searchDialog.show(),结果是一样的。 – CurlyPaul 2014-09-03 12:31:22

+0

@CurlyPaul是的,当你实例化它时会自动显示,但是当你用'getDialog()。dismiss()'隐藏时,我确信你可以用'getDialog.show()'稍后显示它。 – Simas 2014-09-03 12:33:45

0

Simas部分是正确的。当显示Dialog时,getDialog()不返回null,但当没有显示Dialog时它会返回。我保存它作为一个外地在我的课

mDialog = getDialog()

,随后叫

mDialog.show()

它的工作每次。

相关问题