2010-10-12 108 views
7

我創建了一個擴展Dialog的自定義對話框。一個按鈕表明該對話框是一個「OK」按鈕,用戶在完成在其他字段中輸入信息後,預計將按下該按鈕。我無法讓任何聽衆設置爲該按鈕來觸發。自定義對話框上的按鈕不響應點擊事件

public class HeightDialog extends Dialog { 

    private Button okButton; 

    … 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.heightdialog); 

     this.okButton = (Button)this.findViewById(R.id.userOkWithHeight); 

     this.okButton.setOnClickListener(new android.view.View.OnClickListener() { 
     public void onClick(View v) { 
      // Does not fire 
      HeightDialog.this.dismiss(); 
      return; 
     } 
     }); 

     this.okButton.setOnLongClickListener(new OnLongClickListener() { 
     public boolean onLongClick(View v) { 
      // Does not fire 
      HeightDialog.this.dismiss(); 
      return true; 
     } 
     }); 

    this.okButton.setOnTouchListener(new OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent event) { 
      // Does not fire 
      HeightDialog.this.dismiss(); 
      return true; 
     } 
    }); 

    … 
} 

我也試圖在對話框類實現的監聽器的實現(http://www.androidcompetencycenter.com/2009/01/android-basics-dialogs-and-floating-activities/)而不是使用內部類(http://about-android.blogspot.com/2010/02/create-custom-dialog.html): 仍然沒有運氣。

public class HeightDialog extends Dialog implements View.OnClickListener { 

    private Button okButton; 

    … 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.heightdialog); 

     this.okButton = (Button)this.findViewById(R.id.userOkWithHeight); 

     this.okButton.setOnClickListener(this); 


    public void onClick(View view){ 
     HeightDialog.this.dismiss(); 
     return; 
    }  
    … 
} 

我已經設置裏面每個在實施的兩個版本聽衆的斷點,調試器不會停止執行。我曾嘗試將內部類用於沒有解決問題的聽衆。

任何線索? 感謝

回答

0

爲了攔截按鈕點擊HeightDialog必須實現View.OnClickListener

public class HeightDialog extends Dialog implements View.OnClickListener 
{ 
} 
+0

使Dialog實現偵聽器沒有幫助。用相同結果使用的兩種方法更新了問題。 – Mike 2010-10-12 14:35:45

1

爲什麼我不知道爲什麼按照我的帖子中提到的兩個例子沒有工作,我想通了,怎麼把它上班。我不得不通過對話框的onCreate()方法將偵聽器的附件移動到對話框的onStart()方法中的按鈕上。

它出現,這是關係到我也重寫在onStart()方法,在我的自定義對話框:

public void onStart() { 
     super.onStart(); 
     setContentView(R.layout.heightdialog); 

     ... 
    } 

該代碼必須要有「歸零」我的聽衆,其分別在onCreate()方法。

2
dialog = new Dialog(this); 
dialog.setContentView(R.layout.custom_dialog); 
dialog.setTitle("Custom Dialog"); 


Button dialog_btn = (Button) dialog.findViewById(R.id.dialog_button); 
dialog_btn.setOnClickListener(new View.OnClickListener() 
{ 
    // Perform button logic 
} 
+0

Chirag你從被接受的答案中提到的鏈接複製了答案。不好。 – 2017-06-22 03:34:01

相關問題