在视图中创建一个简单的是/否对话框(Android)

时间:2011-09-20 03:13:58

标签: java android android-activity

我的活动中有一个onCreateDialog方法,它有一个案例开关,用于根据请求显示我想要显示的不同对话框。

我无法在视图中使用showDialog()方法,因为无法从创建视图时传递的上下文访问它。至少,我找不到访问它的方法。

如何在我的应用程序视图中使用showDialog?我需要创建一个监听器吗?如果是这样,怎么样?有更好的方法吗?

这是我的应用程序活动中存在的onCreateDialog代码:

protected Dialog onCreateDialog(int id) {
    AlertDialog alert=null;
    switch(id) {
    case DIALOG_GAMEOVER_ID:
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("You died. Play again?")
               .setCancelable(false)
               .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       //init();
                       //oGameState = eGameState.PLAYING; 
                      dialog.cancel();
                   }
               })
               .setNegativeButton("No", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       finish();
                   }
               });
            alert = builder.create();
        break;
    default:
        break;
    }

    return alert;
}

我尝试将引用传递给我的活动,然后崩溃了。也许我做错了?

在我的活动中:

    // set our MainView as the View
    oNebulaMainView = new NebulaMainView(this, this);
    setContentView(oNebulaMainView);

在我看来:

public NebulaMainView(Context context, Activity oActivity) {
    super(context);
    // adding the callback (this) to the surface holder to intercept events
    getHolder().addCallback(this);

    // create the game loop thread
    thread = new NebulaMainThread(getHolder(), this);

    setFocusable(true);

    oActivity.showDialog(DIALOG_GAMEOVER_ID);
}

2 个答案:

答案 0 :(得分:1)

我可能在这里遗漏了一些东西,但是什么阻止了你打电话:

alert.show()

只需让视图可以访问警报,然后在视图中调用该表单。

答案 1 :(得分:0)

将警报声明为实例变量