自定义对话与游戏得分机器人

时间:2014-02-28 23:22:37

标签: java android android-dialog

我遇到了一个很大的问题。当我有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();        }
      }
    });
  }

哪里有问题?有人能解决吗? 现在它只显示我的布局文件,没有任何数据。

谢谢!

1 个答案:

答案 0 :(得分:0)

它没有显示您的数据,因为您没有设置数据。在您使用Builder创建对话框的中间代码片段中,您没有使用自定义对话框,因此显然不再调用代码。同样,在您创建自定义对话框的最后一个片段中,您没有设置任何数据。

请参阅documentation

  

如果您想在对话框中使用自定义布局,请通过调用AlertDialog对象上的setView()来创建布局并将其添加到AlertDialog.Builder

     

默认情况下,自定义布局会填充对话框窗口,但您仍然可以使用AlertDialog.Builder方法添加按钮和标题。