gpt4 book ai didi

android - java.lang.RuntimeException : Can't create handler inside thread that has not called Looper. 准备();

转载 作者:IT老高 更新时间:2023-10-28 13:06:59 27 4
gpt4 key购买 nike

我有一个运行线程的 Android 应用。我希望 Toast 消息与消息一起显示。

当我这样做时,我得到以下异常:

Logcat 跟踪:

FATAL EXCEPTION: Timer-0 
java.lang.RuntimeException: Can't create handler inside thread that has not
called Looper.prepare()

at android.os.Handler.<init>(Handler.java:121)
at android.widget.Toast$TN.<init>(Toast.java:322)
at android.widget.Toast.<init>(Toast.java:91)
at android.widget.Toast.makeText(Toast.java:238)

是否有解决办法将 Toast 消息从线程推送到用户界面?

最佳答案

我收到此异常是因为我试图从后台线程弹出 Toast。
Toast 需要一个 Activity 来推送到用户界面,而线程则没有。
因此,一种解决方法是为线程提供一个指向父 Activity 的链接,并为其提供 Toast。

将此代码放入要发送 Toast 消息的线程中:

parent.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(parent.getBaseContext(), "Hello", Toast.LENGTH_LONG).show();
}
});

在创建此线程的后台线程中保留指向父 Activity 的链接。在你的线程类中使用父变量:

private static YourActivity parent;

创建线程时,通过构造函数将父 Activity 作为参数传递,如下所示:

public YourBackgroundThread(YourActivity parent) {
this.parent = parent;
}

现在后台线程可以将 Toast 消息推送到屏幕上。

关于android - java.lang.RuntimeException : Can't create handler inside thread that has not called Looper. 准备();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17379002/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com