显示 Toast 消息时出错:无法在未调用 Looper.prepare() 的线程内创建处理程序

发布于 2024-12-01 02:26:03 字数 237 浏览 2 评论 0原文

我收到一个运行时异常:无法在工作线程中显示 Toast 消息时未调用 Looper.prepare() 的线程内创建处理程序

我有一个创建对象的服务(在远程进程中运行)。该对象负责在线程中连接到服务器。我收到服务器的响应。我想在 toast 中显示来自服务器的消息。当时我得到了这个例外。我尝试使用 handler.post 将其发布到处理程序中。但我仍然遇到例外。

应该采取什么方法来避免这种情况。

I am getting an Runtime Exception:Can't create handler inside thread that has not called Looper.prepare() while displaying the Toast message in a worker thread.

I have a service (runs in a remote process) which creates an object. This object is responsible for connecting to a server in a thread. I get the response from the sever. I want to display the message from the server in the toast. At that time I getting this exception. I tried posting it in a Handler by using handler.post. But still i am getting the exception.

What should be the approach to avoid this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不必在意 2024-12-08 02:26:03

像这样定义一个处理程序:

 private final Handler handler = new Handler() {
        public void handleMessage(Message msg) {
              if(msg.arg1 == 1)
                    Toast.makeText(getApplicationContext(),"Your message", Toast.LENGTH_LONG).show();
        }
    }

然后将以下代码放在需要显示 toast 消息的位置。

Message msg = handler.obtainMessage();
msg.arg1 = 1;
handler.sendMessage(msg);

Define a Handler like this:

 private final Handler handler = new Handler() {
        public void handleMessage(Message msg) {
              if(msg.arg1 == 1)
                    Toast.makeText(getApplicationContext(),"Your message", Toast.LENGTH_LONG).show();
        }
    }

Then put the following code where you need to show your toast message.

Message msg = handler.obtainMessage();
msg.arg1 = 1;
handler.sendMessage(msg);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文