2014-05-19 92 views
-1

我有一個從當前片段打開的擴展DialogFragment。 最近我發現可以點擊導致在短時間內打開兩次對話框的元素,它會強制打開兩個對話框。這是我的應用程序出乎意料的行爲。我想只能打開一個對話框實例。我做錯了什麼?打開對話框或第二個對話框實例時的Android塊屏幕

下面是我的對話框打開代碼。

public boolean onActionItemSelected(int menuId) { 

    switch (menuId) { 
     case R.id.action_change_passcode: 
      pinChangeFlag = true; 
      AbstractPinDialog pinChangeFirstDialog = new StandardPinDialog(this); 
      pinChangeFirstDialog.show(getFragmentManager(), StandardPinDialog.class.getName()); 
      return true; 
      //... other cases 
    } 
} 
+0

Id'action_change_passcode' a'Button'? – Apoorv

+0

@Apoorv它是來自ActionBar – Sergii

回答

0

一個簡單的方法是設置一個全球性的布爾標記像

isDialogVisible=false; 

,當你表現出的對話框中,將其值設置爲TRUE。顯示對話框前檢查

if(! isDialogVisible){ 
    dialog.show(); 
} 

因此只會出現一個對話框。

第二種方法是檢查對話框的視圖是否已創建,然後使用類似的邏輯來不顯示第二個對話框。

+0

項目的代碼是的,這個解決方案很明確,謝謝。也許這裏是一些預定義的觸發器? – Sergii

+0

你將如何檢查用戶是否關閉了對話框?通過在目標DialogFragment中實現dismiss監聽器? – Sergii

+0

您關閉對話框的地方,只需再次設置isDialogVisible = false即可。 isDialogVisible是一個全局變量 – Kaustuv

相關問題