Метод getWindow () не определен для типа AlertDialog.Builder

Идея, взятая из Android: размытие и затемнение фоновых окон из диалогового окна . У меня возникли проблемы с тем, чтобы содержимое под моим диалогом размылось. При вызове eula.getWindow () я получаю эту ошибку:

Метод getWindow () не определен для типа AlertDialog.Builder

Eula отображается с этим битом кода из основного вида деятельности:

EulaHelper.showEula(false, this); 

Любая помощь приветствуется.

  public static void showEula(final boolean accepted, final FragmentActivity activity) { AlertDialog.Builder eula = new AlertDialog.Builder(activity) .setTitle(R.string.eula_title) .setIcon(android.R.drawable.ic_dialog_info) .setMessage(activity.getString(R.raw.eula)) .setCancelable(accepted); if (accepted) { // If they've accepted the EULA allow, show an OK to dismiss. eula.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); } else { // If they haven't accepted the EULA allow, show accept/decline buttons and exit on // decline. eula .setPositiveButton(R.string.accept, new android.content.DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { setAcceptedEula(activity); dialog.dismiss(); } }) .setNegativeButton(R.string.decline, new android.content.DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); activity.finish(); } }); } eula.show(); WindowManager.LayoutParams lp = eula.getWindow().getAttributes(); lp.dimAmount = 0.0F; eula.getWindow().setAttributes(lp); eula.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND); } 

Solutions Collecting From Web of "Метод getWindow () не определен для типа AlertDialog.Builder"

getWindow() – это метод класса диалога, а не диалогового построителя. Ваш код должен выглядеть примерно так:

 AlertDialog dlg = eula.show(); WindowManager.LayoutParams lp = dlg.getWindow().getAttributes(); lp.dimAmount = 0.0F; dlg.getWindow().setAttributes(lp); dlg.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND); 

Обратите внимание, что константа FLAG_BLUR_BEHIND устарела, размывание за окнами больше не поддерживается . Таким образом, ваш код может сломаться в будущем.

eula – это Строитель, а не сам диалог. Пытаться:

 final AlertDialog eulaDialog = eula.create(); eulaDialog.show(); WindowManager.LayoutParams lp = eulaDialog.getWindow().getAttributes(); lp.dimAmount = 0.0F; eulaDialog.getWindow().setAttributes(lp); eulaDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND);