2014-09-03 296 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()

它的工作每次。

相關問題