我试图在扩展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
我认为这不是一个问题,因为我发现有些人有同样的问题而且他们被告知,这不是问题,但也许是。
那么,有什么想法吗?
答案 0 :(得分:2)
你正在为Android平台创建Dialog可能是你正在使用它与接口。为什么不为libgdx使用跨平台对话框创建API。
尝试gdx-dialogs,它是对本机对话框的开源跨平台(Android,iOS,iOS-MOE,桌面)支持。集成非常简单,只需将依赖放在build.gradle,刷新和使用中即可。
答案 1 :(得分:0)
显然问题是多次调用runOnUiThread
调用alertBoxWonMessage
。确保它只被调用一次后,一切正常!
谢谢大家的帮助。