Как отклонить AlertDialog в android

Я создал AlertDialog, который содержит 4 кнопки

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 (), как я могу это сделать? заранее спасибо.

На самом деле нет метода cancel() или reject dismiss() из класса AlertDialog.Builder.

Итак, вместо 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(); } }); 

Я думаю, что есть более простое решение: просто используйте аргумент DialogInterface который передается методу onClick .

 AlertDialog.Builder db = new AlertDialog.Builder(context); db.setNegativeButton("cancel", new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface d, int arg1) { d.cancel(); }; }); 

См. Например, http://www.mkyong.com/android/android-alert-dialog-example .

Попробуй это:

  AlertDialog.Builder builder = new AlertDialog.Builder(this); AlertDialog OptionDialog = builder.create(); background.setOnClickListener(new OnClickListener() { public void onClick(View v) { SetBackground(); OptionDialog .dismiss(); } }); 

Существует два способа закрытия диалогового окна предупреждения.

Опция 1:

AlertDialog#create().dismiss();

Вариант 2:

The DialogInterface#dismiss();

Из коробки фреймворк вызывает DialogInterface#dismiss(); Когда вы определяете прослушиватели событий для кнопок:

  1. AlertDialog#setNegativeButton();
  2. AlertDialog#setPositiveButton();
  3. AlertDialog#setNeutralButton();

Для диалогового окна «Предупреждение».

Просто попробуйте это –

 OptionDialog.create().dismiss(); 

Надеюсь, это решит вашу проблему.

Вот как я закрываю свой alertDialog

 lv_three.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { GetTalebeDataUser clickedObj = (GetTalebeDataUser) parent.getItemAtPosition(position); alertDialog.setTitle(clickedObj.getAd()); alertDialog.setMessage("Öğrenci Bilgileri Güncelle?"); alertDialog.setIcon(R.drawable.ic_info); // Setting Positive "Yes" Button alertDialog.setPositiveButton("Tamam", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // User pressed YES button. Write Logic Here } }); alertDialog.setNegativeButton("İptal", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { //alertDialog. alertDialog.setCancelable(true); // HERE } }); alertDialog.show(); return true; } }); 

Просто установите представление как null, которое просто закроет AlertDialog.