2010-08-16 67 views
5

我有一個自定義佈局的對話,我嘗試關閉它,當我按下一個按鈕:辭退自定義對話框問題

private void showAboutDialog() { 

    dialog = new Dialog(MainMenu.this); 
    dialog.setContentView(R.layout.about_dialog); 
    dialog.setCancelable(true); 
    dialog.setTitle(R.string.about_title); 
    dialog.show(); 

    LayoutInflater inflater = (LayoutInflater)  
    getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE); 
    View layout = inflater.inflate(R.layout.about_dialog, 
      (ViewGroup) findViewById(R.id.layout_root)); 

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

但它不工作。

+0

您是否在LogCat上看到任何錯誤? – 2010-08-16 14:39:55

回答

7

您的監聽器未被調用。

替換:

Button closeButton = (Button) layout.findViewById(R.id.about_close_button); 

與:

Button closeButton = (Button) dialog.findViewById(R.id.about_close_button); 

和除去上面的兩行(LayoutInflater inflater = ...View layout = ...)。

+0

謝謝!它的工作原理:) – Trox 2010-08-16 16:16:36

+0

+1爲你的幫助..這將是偉大的,如果可以請解釋這項工作和其他人不? – 2013-01-14 13:30:49

+1

@MohitSharma這很明顯,爲什麼這個工程和OP的代碼沒有。 OP調用'inflater.inflate()'來擴大對話框的佈局,並創建一組存儲在變量「layout」中的對象。然後,他將他的聽衆設置在那裏已經充氣的物體上。但是,執行此代碼時:'dialog.setContentView(R.layout.about_dialog);'該對話框正在擴大對話框本身的佈局,創建它自己的一組對象(其中一個對象代表'Button '在對話框中)。在對話框中調用'findViewById()'返回... – 2013-02-06 20:06:13