开发者社区> 问答> 正文

从run()方法显示对话框

我试图从运行方法弹出对话框,它给了我没有调用Looper.prepare的异常,当我调用相同的方法时,我没有得到任何异常,但是控制台上没有弹出对话框。正如我以这种方式使用处理程序一样,


handler = new Handler() {
    public void handleMessage(Message msg) {
        showDialog(DIALOG1_KEY);
        // process incoming messages here
    }
};

我再也没有遇到任何例外,但是仍然没有运气能告诉我我做错了什么。

展开
收起
Puppet 2020-01-20 09:36:11 411 0
1 条回答
写回答
取消 提交回答
  • 从您提供的代码片段很难看出来,但我认为您使用的处理程序不正确。

    您需要做的是Handler在它们的主线程上初始化一个新对象,例如,通过将其定义为字段变量。

    
    private Handler handler = new Handler();
    

    然后创建一个Runnable包含要在GUI线程上执行的指令的新指令(但将从后台线程的run方法中调用该指令)。

    private Runnable runOnGUI = new Runnable() {
      private void run() {
        showDialog(DIALOG1_KEY);
      }
    };
    

    然后,在运行方法中,您需要使用处理程序对象将您的runOnGUI方法发布到GUI线程上。

    private Runnable runInBackground = new Runnable() {
      private void run() {
        handler.post(runOnGUI);
        // Do processing
      }
    };
    
    2020-01-20 09:36:35
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载