我遇到了一个很大的问题。当我有AlertBox时,一切都很好,但我会将其更改为自定义对话框,图形非常好。 使用AlertBox,它显示当前分数和高分。
当我将其更改为自定义对话框时,它没有显示任何内容。
CustomDialogClass.java
public class CustomDialogClass extends Dialog
{
public CustomDialogClass(Context context) {
super(context);
// TODO Auto-generated constructor stub
/** It will hide the title */
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_dialog);
}
}
GameActivity.java (带有自定义对话框的片段)
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
surfaceCreated = false;
stopDrawingThread();
}
public void customizeDialog() {
int highest = PrefUtil.getHighestScore(this);
String text = null;
if (currentPoint > highest) {
highest = currentPoint;
PrefUtil.setHighestScore(this, currentPoint);
} else {
}
text = "Current Points: " + currentPoint + "\nThe Best Score: " + highest;
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Game Over");
builder.setMessage(text);
builder.setPositiveButton("Try Again", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
playSwooshing();
restart();
}
});
builder.setNegativeButton("Exit Game", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(GameActivity.this,Bye.class);
startActivity(intent);
playSwooshing();
finish();
}
});
builder.setCancelable(false);
alertDialog = builder.show();
}
和另一个片段:
private void onGameOver() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (!isFinishing()) {
soundPool.play(soundIds[SOUND_DIE], 0.5f, 0.5f, 1, 0, 1);
CustomDialogClass customizeDialog = new CustomDialogClass(GameActivity.this);
customizeDialog.show(); }
}
});
}
哪里有问题?有人能解决吗? 现在它只显示我的布局文件,没有任何数据。
谢谢!
答案 0 :(得分:0)
它没有显示您的数据,因为您没有设置数据。在您使用Builder
创建对话框的中间代码片段中,您没有使用自定义对话框,因此显然不再调用代码。同样,在您创建自定义对话框的最后一个片段中,您没有设置任何数据。
请参阅documentation:
如果您想在对话框中使用自定义布局,请通过调用
AlertDialog
对象上的setView()
来创建布局并将其添加到AlertDialog.Builder
。默认情况下,自定义布局会填充对话框窗口,但您仍然可以使用
AlertDialog.Builder
方法添加按钮和标题。