当前位置: 首页 > 面试题库 >

对于类型AlertDialog.Builder,未定义方法getWindow()

潘翰藻
2023-03-14
问题内容

取自Android的想法:从对话框中模糊和暗化背景窗口。我无法使对话框下的内容模糊。当调用eula.getWindow()时,我收到此错误:

对于类型AlertDialog.Builder,未定义方法getWindow()

随同主要活动中的以下代码一起显示出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);

}

问题答案:

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现在不建议使用该常量,但不再支持在窗口后面模糊。因此,您的代码将来可能会中断。



 类似资料:
  • 我试图让它在用户按下登录时关闭我的jframe。然而,它不让我处理登录窗口。请帮帮我。谢谢你。

  • 颜色选取器 在 1.受保护的无效上创建(捆绑保存实例状态) { 超级.on创建(已保存实例状态); 错误:创建(捆绑包)上的方法未定义对象 类型2.new MyView(指画活动.this); 错误:构造函数指画活动.MyView(指画活动)未定义 3.set内容查看(mv); 错误:他的方法集内容视图(指画活动.MyView)是未定义的类型指画活动 4.公共布尔值在创建选项菜单(菜单菜单) {

  • 我使用的是JTang版本1.9.2,代码如下: 错误在这一行: 它说: 类型连接的方法头(字符串、字符串)未定义。基瓦尔 但是jsoup文档说,这种方法可以使用以下参数: https://jsoup.org/apidocs/org/jsoup/Connection.Response.html 我已经在jsoup的前一个版本中使用了这段代码。 它有什么问题?

  • 正如代码所示,我想知道的是,在内存分配中,隐藏Base而不调用子的额外方法的实际情况是什么,它被调用了什么,有没有一种通过Base调用方法的方法。请帮忙

  • 超过3个小时,我试图解决相当容易的错误(第一眼): 但还是没有成功。 我有DB表products,其中包含列category\u id和manufacturer\u id。 协会: 试图获取一些数据: 我获取了所有行,其中在列

  • 我试图在eclipse中使用tomcat部署一个gradle web项目,当我试图访问应用程序时,它抛出一个异常,如下所示: JasperException:无法为JSP编译类: 在生成的Java文件[......plugins\org.eclipse.wst.server.core\tmp0\work\catalina...\org\apache\jsp\error_jsp.]中的行[36]处发