我试图在我的应用程序中添加一个alertdialog而不是成功的10个小时,我认为这将是一个愚蠢的问题,但我真的很新,试图研究许多链接,如{{3 }}; AlertDialog - Not Working,但即使我仍有问题。
实际上,我每次基本都遇到同样的问题:
这里是我从链接中复制的代码来帮助我:
public void dbFail(){
AlertDialog alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle("Reset...");
alertDialog.setMessage("Are you sure?");
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// here you can add functions
}
});
alertDialog.show();
}
并且问题在于:
构造函数AlertDialog.Builder(ConnectDB¹)未定义。
¹-这是我的背景名称
那么,我真的需要做什么?我没有看到有人在谈论实现这个构造函数......我是否需要在AlertDialog.Builder调用中实现一个方法,描述他应该做什么?
答案 0 :(得分:1)
尝试更改:
new AlertDialog.Builder(this).create();
对此:
new AlertDialog.Builder(YourActivityClassName.this).create();
确保您在此处提供活动的上下文(不是应用程序上下文,即getApplicationContext()
)。不要与应用程序上下文和活动上下文混淆,因为它们在初始化对象时都很重要。
答案 1 :(得分:1)
上下文必须是一个活动。
根据您的错误The constructor AlertDialog.Builder(ConnectDB) is undefined.
来判断,我猜您是在尝试在某种与数据库相关的类中显示此AlertDialog。
您需要在活动中创建AlertDialog,或者需要将Activity传递给ConnectDB类,以便ConnectDB可以使用它来生成对话框。
答案 2 :(得分:0)
如果您尝试从另一个类显示警报对话框,则必须将该活动的实例传递给另一个类并在其上调用runOnUiThread
方法。
以下是我的表现(游戏是活动):
game.runOnUiThread(new Runnable() {
public void run() {
builder = new AlertDialog.Builder(game);
builder.setTitle("Network Error");
builder.setMessage("Please connect to the internet");
builder.setCancelable(false);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
game.finishGame();
}
});
initialized = true;
}
});