49

4つのボタンを含むAlertDialogを作成しました

OptionDialog = new AlertDialog.Builder(this);
        OptionDialog.setTitle("Options");
        LayoutInflater li = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View v = li.inflate(R.layout.options, null, false);
        background = (Button) v.findViewById(R.id.bkgSpinnerLabel);
        SoundVib = (Button) v.findViewById(R.id.SoundVibSpinnerLabel);

        OptionDialog.setView(v);
        OptionDialog.setCancelable(true);
        OptionDialog.setNeutralButton("Ok",
                new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface arg0, int arg1) {
                    }
                });
        background.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                SetBackground();
             // here I want to dismiss it after SetBackground() method 
            }
        });


        SoundVib.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Intent soundVibIntent = new Intent(SebhaActivity.this, EditPreferences.class);
                startActivity(soundVibIntent);
            }
        });

        OptionDialog.show();

SetBackground()メソッドの後でそれを閉じたいのですが、どうすればよいですか?前もって感謝します。

4

7 に答える 7

143

実際には、AlertDialog.Builderクラスからのメソッドはありませんcancel()dismiss()

したがって、インスタンスをAlertDialog.Builder optionDialog使用する代わりに。AlertDialog

好き、

AlertDialog optionDialog = new AlertDialog.Builder(this).create();

今、電話するだけ optionDialog.dismiss();

background.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        SetBackground();
        // here I want to dismiss it after SetBackground() method 
        optionDialog.dismiss();
    }
});
于 2013-02-13T12:16:45.687 に答える
64

もっと簡単な解決策があると思います。メソッドDialogInterfaceに渡される引数を使用するだけです。onClick

AlertDialog.Builder db = new AlertDialog.Builder(context);
        db.setNegativeButton("cancel", new DialogInterface.OnClickListener(){
            @Override
            public void onClick(DialogInterface d, int arg1) {
                db.cancel();
                //here db.cancel will dismiss the builder

            };  
        });

たとえば、http://www.mkyong.com/android/android-alert-dialog-exampleを参照してください。

于 2014-02-27T04:43:08.130 に答える
11

これを試して:

   AlertDialog.Builder builder = new AlertDialog.Builder(this);
   AlertDialog OptionDialog = builder.create();
  background.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            SetBackground();
       OptionDialog .dismiss();
        }
    });
于 2013-02-13T12:19:36.253 に答える