2017-07-03 37 views
-2

我不能讓這個按鈕的工作:不兼容的類型:android.content.DialogInterface.OnClickListener不能轉換到android.view.View.OnClickListener

public void setConfirmListenner(OnClickListener listener) { 
     ((Button) this.contentView.findViewById(R.id.confirmButton)).setOnClickListener(listener); 
     } 

Error:(296, 85) error: incompatible types: android.content.DialogInterface.OnClickListener cannot be converted to android.view.View.OnClickListener

+0

我想這是一個你正在使用的庫,因爲'setConfirmListener'。無論如何,這是不夠的,請顯示您的代碼併發布完整的堆棧跟蹤... – Opiatefuchs

+0

該方法包含一個'View.OnClickListener',並且您傳遞一個'DialogInterface.OnClickListener'。我認爲你必須刪除導入和導入,而不是'View.OnClickListener' – Opiatefuchs

回答

0

你從字面上讀什麼錯誤說:View.OnClickListenerDialogInterface.OnClickListener是不同的接口。一個顯而易見的解決辦法是改變你的setConfirmListenner的簽名是

public void setConfirmListenner(View.OnClickListener listener) { 

如果這不是什麼邏輯發生即setConfirmListenner實際上是從DialogInterface繼承一個看似很合理的給你錯誤的類,你需要創建一個包裝。像這樣的東西可能會工作:

public void setConfirmListenner(final OnClickListener listener) { 
    ((Button) this.contentView.findViewById(R.id.confirmButton)).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      listener.onClick(MyDialogClass.this, BUTTON_POSITIVE); 
     } 
    }); 
} 

其中MyDialogClass是您的自定義對話框類的名稱。我假設你想通過BUTTON_POSITIVE作爲which,但如果你更適合你,你可能會通過別的東西。

+0

你是一個偉大的開發人員,我工作完美,非常感謝你的幫助 –

相關問題