我的活动中有一个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);
}
答案 0 :(得分:1)
我可能在这里遗漏了一些东西,但是什么阻止了你打电话:
alert.show()
只需让视图可以访问警报,然后在视图中调用该表单。
答案 1 :(得分:0)
将警报声明为实例变量