3

我正在使用 andengine 开发游戏,现在我需要创建一个我正在使用的警报对话框

 case MENU_OPT:
        mEngine.runOnUpdateThread(new Runnable() {
         @Override
         public void run() {


             AlertDialog.Builder alert = new AlertDialog.Builder(GameActivity.this);
             alert.setTitle("");
             alert.setMessage("");
             alert.setPositiveButton("OK", new OnClickListener() {
                     @Override
                     public void onClick(DialogInterface arg0, int arg1) {

                     }
             });

             alert.show();
         }
        });
         break;

但出现错误 java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

代码有什么问题,或者我是否可以使用带有andengine的alertdialog builder。

4

3 回答 3

3

只需制作 Main Activity 类的 Object 并使用 Object

activity.runOnUIThread(new Runnable() {
     @Override
     public void run() {


         AlertDialog.Builder alert = new AlertDialog.Builder(GameActivity.this);
         alert.setTitle("");
         alert.setMessage("");
         alert.setPositiveButton("OK", new OnClickListener() {
                 @Override
                 public void onClick(DialogInterface arg0, int arg1) {

                 }
         });

         alert.show();
     }
    });
于 2013-10-08T07:07:55.493 回答
2

alert.show();不是用andengine显示警报的方式。

1.您可以Activity.showDialog()用于警报。

或者

2.你可以AlertDialog.Builder像这样使用:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
于 2013-06-18T12:33:55.577 回答
0

您已经完成了所有正确的事情,只需对代码进行一次更改。

 mEngine.runOnUIThread(new Runnable() {
     @Override
     public void run() {


         AlertDialog.Builder alert = new AlertDialog.Builder(GameActivity.this);
         alert.setTitle("");
         alert.setMessage("");
         alert.setPositiveButton("OK", new OnClickListener() {
                 @Override
                 public void onClick(DialogInterface arg0, int arg1) {

                 }
         });

         alert.show();
     }
    });

您必须使用 UIThread 来显示对话框而不是 UpdateThread,因为两者都有各自的用途。

于 2013-06-18T17:09:57.243 回答