2017-09-15 54 views
0

我有一個與功能的對話框util的類:從按鈕辭退AlertDialog在定製視圖

public static void buildCustomDialog(Context contextRef, View dialogContentView) 
{ 
    AlertDialog.Builder builder = new AlertDialog.Builder(contextRef); 

    builder.setView(dialogContentView); 

    builder.setNegativeButton(contextRef.getString(R.string.std_cancel), null); 

    AlertDialog dialog = builder.create(); 

    dialog.show(); 

} 

並且我通過它與clickListeners兩個按鈕的圖。一切都很好,除非用戶單擊其中一個自定義按鈕時無法關閉對話框。所以他們導航到另一個頁面,回擊並且對話仍然存在。

如何在創建對話框之前創建自定義clickListeners中的對話框的引用?

我試過每一個可以想象的選項。我最近的嘗試是使用自定義界面創建自定義DialogFragment,但即使如此,在AlertDialog構建器創建對話框之前,視圖(以及按鈕及其偵聽器)也會創建。

我覺得這應該是超級簡單,我失去了一些東西......

回答

2

您需要設置onClick監聽器上的自定義按鈕。

試試這個:

AlertDialog.Builder builder = new AlertDialog.Builder(contextRef); 

    builder.setView(dialogContentView); 

    Button btnOk= (Button) dialogContentView.findViewById(R.id.btn_ok); 

    builder.setNegativeButton(contextRef.getString(R.string.std_cancel), null); 

    AlertDialog dialog = builder.create(); 

    dialog.show(); 

    btnOk.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      dialog.dismiss(); 
     } 
    }); 

這就是它!

+0

是的。我在創建對話框之前先設置了監聽器,並且我從來沒有想過在......之後設置它。謝謝! – MayNotBe

0

簡單。返回對話框引用,將其收集到您調用此方法的位置。檢查你的解僱按鈕偵聽器,如果對話框引用持有有效的對象。如果是,則關閉此對話框。