2012-03-20 12 views
2

私は知っている、同様の質問が尋ねられて、私はすでに私が見つけることができたすべてを見てきましたが、私はこの問題に対する答えを見つけることができませんでした。ここでAlertDialogを使用しないカスタムダイアログでキャンセルボタンを実装するにはどうすればよいですか?

のコードです:

protected Dialog onCreateDialog(int id) 
    { 
     Dialog dialog = new Dialog(this); 
     switch(id) 
     { 
      case R.layout.database_feed: 
       dialog.setContentView(R.layout.database_feed); 
       ((Button) dialog.findViewById(R.id.discard_button)).setOnClickListener(
        new View.OnClickListener() 
        { 
         //@Override 
         public void onClick(View v) 
         { 
          //dialog.cancel(); 
         } 
        } 
       ); 
       break; 
     } 
     return dialog; 
    } 

私は単純にR.layout.database_feedボタンをクリックでダイアログを閉じたいです。しかし、私はonClickメソッド内のダイアログにアクセスしていません。私は本当に混乱して感じる。

AlertDialogやDialogBu​​ilderを使用したくないのですが、ダイアログ内にAlertDialogなどで実装するのが難しい他のものがあるためです。 また、私は既にDialogのための別のアクティビティを作成するための解決策を知っていますが、実際には私がここで試している方法でどのように動作するのか知りたいのです。 さらに、私はすでにDialogInterface.OnClickListener()を使用しようとしましたが、setOnClickListener(...) - メソッドでは使用できません。

ダイアログをキャンセルすることはそれほど難しいことではありませんが、私はそれを取得しません。

ヒント/助けをいただければ幸いです。

final Dialog dialog = new Dialog(this); 

Thxを

答えて

4

変更

Dialog dialog = new Dialog(this); 

次に、あなたのonClick()メソッドでは、ダイアログにアクセスすることができます。

+0

完璧です。私は何時間もそれを探していた。ありがとう! – Michi

+2

余分なヒント:eclipseでは、匿名クラス内から変数にアクセスする必要があるときに変数finalを宣言するのがデフォルトの自動修正アクションです。 – njzk2

2

「ダイアログ」をクラス変数として保存するか、メソッド内で最後に設定します。

関連する問題