0

10 个小时以来,我一直在尝试向我的应用程序添加一个 alertdialog,但没有成功,我认为这将是一个愚蠢的问题,但我对此很陌生,试图研究许多链接,如AlertDialog - Not WorkingSDK Android AlertDialog.Builder,但即便如此我仍然有问题。

实际上,我每次都遇到基本相同的问题:

这是我从链接中复制的代码来帮助我:

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 调用中实现一个方法,描述他应该做什么?


4

3 回答 3

1

尝试改变:

new AlertDialog.Builder(this).create();

对此:

new AlertDialog.Builder(YourActivityClassName.this).create();

确保您在此处提供Activity 的上下文(不是应用程序上下文,即getApplicationContext())。不要与应用程序上下文活动上下文混淆,因为它们在初始化对象时都很重要。

于 2012-08-06T14:05:37.393 回答
1

上下文需要是一个活动。

根据您的错误判断The constructor AlertDialog.Builder(ConnectDB) is undefined.,我猜您正试图在某种与数据库相关的类中显示此 AlertDialog 。

您需要在 Activity 中创建 AlertDialog,或者需要将 Activity 传递给 ConnectDB 类,以便 ConnectDB 可以使用它来生成对话框。

于 2012-08-06T14:06:49.140 回答
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;

            }

        });
于 2012-08-06T14:59:24.767 回答