Android 在自定义视图中显示对话框

Android show dialog in Custom View

我创建了一个显示简单游戏的自定义视图

我在MainActivity中设置自定义视图

setContentView(new CustomView())

在这个自定义视图中,只有几个球和计时器

当一个球碰到另一个球时。计时器将停止并显示结果。

我不知道如何以更好的方式显示结果。所以我尝试创建一个对话框来显示结果。

这段代码写在CustomView中class

if (ballIsTouch) {
            AlertDialog alertDialog = new AlertDialog.Builder(getContext()).create();
            alertDialog.setTitle("Result");
            alertDialog.setMessage(point);
            alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
            alertDialog.show();
        }

但是,页面被冻结了。对话框没有显示。

  • create() - 是最后一步 - 当您使用构建器模式创建对话框时,您首先在链中设置所有变量然后创建对话框 - 并显示它应该是

        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getContext());
        alertDialogBuilder.setTitle("Result");
        alertDialogBuilder.setMessage(point);
        alertDialogBuilder.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
        AlertDialog alertDialog = alertDialogBuilder.create();
        alertDialog.show();
    

        alertDialogBuilder.setTitle("Result")
          .setMessage(point)
          .setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });

确保您的 getContext() 有效(应该是 activity,服务上下文)** 在 activity 中使用 thisMyactivity.this 在片段 interface/callback 中 getActivity()

**see Dialog creation context