libgdx中的Android AlertDialog没有对点击作出反应

时间:2017-02-25 14:03:44

标签: android libgdx alertdialog

我试图在扩展AlertDialog的类中展示AndroidApplication(这是一个扩展Activity的libgdx类)。代码如下所示

import android.app.AlertDialog;

public class Solitaire extends AndroidApplication{

public void alertBoxWonMessage() {
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(Solitaire.this);

    // set title
    alertDialogBuilder.setTitle(R.string.won_title);
    // set message and positive button
    alertDialogBuilder
            .setMessage(Html.fromHtml("Total time: " + timeForAlert(time) + "<br>" + "Total Points: " + pointsView.getText().toString()))
            .setCancelable(false)
            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    // if this button is clicked, close
                    // current activity
                    Log.d("Hi", "hi");
                    dialog.dismiss();
                    exit();
                    Solitaire.this.finish();
                }
            });

    // create alert dialog
    AlertDialog alertDialog = alertDialogBuilder.create();

    // show it
    alertDialog.show();
}
}

对话框显示正常,但单击肯定按钮时没有动画,并且onClick内的代码未执行。也没有任何内容写入控制台(我也尝试Gdx.app.log(...)System.out.println(...)而不是Log.d(...),但没有尝试,也没有关闭对话框或活动关闭。

此外,它似乎使用了大量内存(计算机变得非常慢)并将以下行打印到控制台:

E/EGL_emulation: tid 5206: eglSurfaceAttrib(1174): error 0x3009 (EGL_BAD_MATCH)
W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x9488e800, error=EGL_BAD_MATCH

我认为这不是一个问题,因为我发现有些人有同样的问题而且他们被告知,这不是问题,但也许是。

那么,有什么想法吗?

2 个答案:

答案 0 :(得分:2)

你正在为Android平台创建Dialog可能是你正在使用它与接口。为什么不为libgdx使用跨平台对话框创建API。

尝试gdx-dialogs,它是对本机对话框的开源跨平台(Android,iOS,iOS-MOE,桌面)支持。集成非常简单,只需将依赖放在build.gradle,刷新和使用中即可。

答案 1 :(得分:0)

显然问题是多次调用runOnUiThread调用alertBoxWonMessage。确保它只被调用一次后,一切正常!

谢谢大家的帮助。