【问题标题】:How to show alert dialog in a running thread?如何在正在运行的线程中显示警报对话框?
【发布时间】:2012-09-13 06:29:03
【问题描述】:

我正在开发一个 Android 游戏。在这个游戏中,有火车运行的轨道。这是正在运行的线程。我想在两者之间发生碰撞时显示一个警报对话框。当我应用显示错误的警报对话框时,无法在未调用 looper.prepare() 的线程内创建处理程序。

【问题讨论】:

    标签: android android-alertdialog game-loop


    【解决方案1】:

    这将对您有所帮助:

    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            // Your dialog code.
        }
    });
    

    【讨论】:

    • 当我在我的代码中添加 runOnUiThread 时显示错误:- 方法 runOnUiThread(new Runnable(){}) 对于 MainGamePanel 类型未定义
    【解决方案2】:

    您必须需要在 UI 线程中创建 AlertDialog 否则它将永远无法工作。如果你在不同的线程使用MessageHandler或者可以使用runOnUiThread(使用runnable)在里面创建你的对话框。

    【讨论】:

      【解决方案3】:

      您可以使用处理程序来完成这项工作。

      Handler mHandler = new Handler(Looper.getMainLooper());
      mHandler.post(new Runnable() {
          @Override
          public void run() {
              // Your UI updates here
          }
      });
      

      【讨论】:

      • 应该是mHandler。编辑它。谢谢...:)
      • 你需要初始化变量Handler mHandler= new Handler();
      【解决方案4】:

      您可以在 Activity 类中创建一个处理程序,并可以调用 sendMessage 到该处理程序对象。编写代码在Handler的handleMessage方法中显示alert,例如:

      活动类

      Handler mHandler = new Handler()
      {
          public void handleMessage(Message msg)
          {
             //Display Alert
          }
      };
      
      //Thread
      
      Thread thread= new Thread()
      {
          public void run()
          {
               //Logic
               MHandler.sendEmptyMessage(0);
          }
      }
      

      【讨论】:

        【解决方案5】:

        您必须在 UI 线程上显示您的对话框,如下所示

        runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                        // Your dialog code.
                        }
                    });
        

        【讨论】:

          【解决方案6】:

          你可以试试这个,检查应用是否可见

          Activity currentActivity = MainClassApp.getCurrentActivity();
          boolean isAppVisible = currentActivity != null;
          
          if (isAppVisible) {
              currentActivity.runOnUiThread(() -> 
              // Your Dialog Code 
          }
          

          【讨论】:

            猜你喜欢
            • 2023-03-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-01-08
            • 1970-01-01
            相关资源
            最近更新 更多