2011-06-20 14 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(); 
    } 
}); 

私はこのコードを持っていますが、却下は機能しません。カスタムダイアログを閉じることができません。

私は「約」ボタンを持っており、それをクリックするとダイアログウィンドウが表示されます。 ダイアログウィンドウには「OK」ボタンがあり、このOKボタンはダイアログを閉じる必要がありますが、切断は機能していません。 理由を知ってもらえますか?

答えて

6

まず、あなたのダイアログでは、いずれの方法の外に

public Dialog dialog; 

を宣言する必要があるので、あなたのクラスの範囲にあることが必要です。次に、あなたのonCreate()メソッドで、既に持っているようにダイアログを作成します。 OnClickListenersへの呼び出しをshow()dismiss()のままにしておきます。

あなたのボタンは、その後、次のようになります。また

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(); 
     } 
}); 
関連する問題