2012-08-06 31 views
0

10个小时,我试图添加一个alertdialog到我的应用程序,但没有成功,我认为这将是一个愚蠢的问题,但我真的在这个新的,试图在许多像那些链接AlertDialog - Not Working; SDK Android AlertDialog.Builder,但即使这样我仍然有问题。添加一个AlertDialog - 未定义的构造函数

其实,我每次basicly同样的问题:

在这里,我从链接复制的代码,以帮助我:

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

我认为这是不够的 - '新AlertDialog.Builder(myContext);' – Praveenkumar 2012-08-06 14:09:55

回答

1

上下文需要是一个活动。

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

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

+0

您清除了我的心,我想关于这个权利,谢谢 – 2012-08-06 14:13:22

+0

真棒,它工作!哈哈哈哈,谢谢你们 – 2012-08-06 14:14:55

1

尝试改变:

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

要这样:

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

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

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; 

      } 

     });