2011-06-20 111 views
1
//About Button in the principal menu  
final Button button3 = (Button) findViewById(R.id.button3); 

button3.setOnClickListener(
    new OnClickListener() { 

    public void onClick(View v) {     
     //set up dialog 
     Dialog dialog = new Dialog(MainMenu.this); 
     dialog.setContentView(R.layout.maindialog); 
     dialog.setTitle("About"); 
     dialog.setCancelable(true); 

     //now that the dialog is set up, it's time to show it  
     dialog.show(); 

     Button closeButton = (Button) dialog.findViewById(R.id.Button01); 
//  closeButton.setOnClickListener(new Button.OnClickListener() { 
//   public void onClick(View view) { 
//    dialog.dismiss(); 
//   } 
//  }); 

     if(v==closeButton) 
      dialog.dismiss(); 
    } 
}); 

我有這段代碼但解僱不起作用。不能關閉自定義對話框

我有一個「關於」按鈕,當我點擊它顯示對話框窗口。 然後對話窗口有一個「確定」按鈕,該確定按鈕應關閉該對話框但辭退不工作。 你能幫我知道爲什麼嗎?

回答

6

首先,你的對話框需要在你的類的範圍,所以你需要聲明

public Dialog dialog; 

之外的任何方法。然後,在你的onCreate()方法中,像你已經有的那樣創建對話框。只留下show()dismiss()來電來OnClickListeners。然後

你的按鈕看起來像:

Button button3 = (Button) findViewById(R.id.button3); 
button3.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     dialog.show(); 
    } 
}); 

Button closeButton = (Button) dialog.findViewById(R.id.Button01); 
closeButton.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     dialog.dismiss(); 
    } 
}); 

而且,這是很好的拿出一個命名約定,爲你工作,而不是隨機大寫或不大寫的資源名稱(例如,Button03與按鈕1) ;

+0

大!感謝您的幫助。非常感謝unholysampler = D – Ricardo

+0

感謝您幫助我Glendon Trullinger! :) – Ricardo

1

你也可以寫一個共同的onClick兩個這樣的按鈕。這將避免重寫每個按鈕的onClick事件。它將變得易於維護。

公共無效的onClick(視圖v){

switch(v.getId()) 
    { 
     case R.id.button3: 
      dialog.show(); 

     case R.id.Button01: 
      dialog.dismiss(); 
    } 


} 
+0

好的法力,問題解決了,不過謝謝你= D – Ricardo

1

初始化對話框的OnClickListener之外。

Dialog dialog = new Dialog(MainMenu.this); 
dialog.setContentView(R.layout.maindialog); 

button3.setOnClickListener(new OnClickListener() {   
     public void onClick(View v) {    
     dialog.show();  
     } 
}); 

Button closeButton = (Button) dialog.findViewById(R.id.Button01); 
closeButton.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      dialog.dismiss(); 
     } 
});