【问题标题】:How to create alert dialog with andengine如何使用 andengine 创建警报对话框
【发布时间】:2013-06-18 12:28:50
【问题描述】:

我正在使用 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:无法在未调用 Looper.prepare() 的线程内创建处理程序

代码有什么问题,或者我是否可以将 alertdialog builder 与 andengine 一起使用。

【问题讨论】:

  • 我认为你甚至不需要在 UpdateThread 上运行它。
  • 你是否已经尝试过 Looper.prepare();在创建/显示对话框之前,以及 Looper.loop();之后呢?
  • 还将 alert.show() 替换为 AlertDialog alert =builder.create(); alert.show();
  • 看看 AndEngine 本身的包 org.andengine.ui.dialog,有使用 AlertDialog 的代码...你会从那里得到一些想法。
  • 这段代码应该在 UI 线程而不是更新线程上运行。

标签: java android andengine alert android-alertdialog


【解决方案1】:

只需制作主活动类的对象并使用对象

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();
     }
    });

【讨论】:

    【解决方案2】:

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

    1.您可以使用Activity.showDialog()进行提醒。

    2.你可以使用AlertDialog.Builderlike:

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    

    【讨论】:

      【解决方案3】:

      您已经做对了所有事情,只需对代码进行一次更改。

       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,因为两者都有各自的用途。

      【讨论】:

      • UI 线程是普通线程,所以我认为没有必要通过 UI 线程上的 Runnable 来执行此操作。只需调用 alertDialog 代码
      • 不,据我所知,我们不能直接使用它需要线程的警报对话框。这个答案在游戏的场景基础结构中变得有用。
      猜你喜欢
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-27
      • 2018-01-23
      • 1970-01-01
      • 2018-08-27
      相关资源
      最近更新 更多