2017-07-05 119 views
0

我正在創建一個自定義對話框,單擊我的活動中的按鈕。有一個在對話框按鈕。我將像這樣:在onClick中獲取對話框參考

Button buttonTakePicture = (Button)dialog.findViewById(R.id.buttonTakePicture); 
buttonTakePicture.setOnClickListener(this); 

我的活動正在實施onClickListener,以及覆蓋onClick方法是這樣的:

@Override 
    public void onClick(View view) { 
     switch (view.getId()) { 
      case R.id.buttonTakePicture: 
       Dialog dialog = //Get the dialog somehow from view; 
       if (dialog != null) { 
        dialog.dismiss(); 
       } 
       takePicture(); 
       break; 
     } 
    } 

我掙扎着爬了對話框參考。我嘗試過(Dialog)view.getParent()以及(Dialog)view.getParent.getParent(),但它們不是對話框。

我不想在我的活動中有一個對話框字段,除非它是唯一的方法。

任何幫助,將不勝感激。提前致謝。

+0

這不是正確的方式來做到這一點,你必須寫一個接口在對話框類,然後在你的活動中實現該接口。 – sumit

+0

@Sac請檢查下面的解決方案,並讓我知道如果擔心 –

+0

@sumit是否可以使用基本上是我們的按鈕的視圖來獲取onClick自身對話框的引用。 – Sac

回答

0

我對這個解決方案,

Button buttonTakePicture = (Button)dialog.findViewById(R.id.buttonTakePicture); 
     buttonTakePicture.setTag(dialog); 
     buttonTakePicture.setOnClickListener(this); 

,並獲得對話框這樣,

@Override 
    public void onClick(View view) { 
     switch (view.getId()) { 
      case R.id.buttonTakePicture: 
       Dialog dialog = (Dialog) view.getTag(); 
       if (dialog != null) { 
        view.setTag(null); 
        dialog.dismiss(); 
       } 
       takePicture(); 
       break; 
     } 
    } 
+0

它工作。謝謝。 – Sac