无法在未调用 Looper 的线程内创建处理程序 [重复]
Posted
技术标签:
【中文标题】无法在未调用 Looper 的线程内创建处理程序 [重复]【英文标题】:Can't create handler inside thread that has not called Looper [duplicate] 【发布时间】:2013-08-30 09:46:52 【问题描述】:我收到以下错误:
08-27 17:49:17.995: E/androidRuntime(10085): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
08-27 17:49:17.995: E/AndroidRuntime(10085): at android.os.Handler.<init>(Handler.java:121)
08-27 17:49:17.995: E/AndroidRuntime(10085): at android.widget.Toast$TN.<init>(Toast.java:361)
08-27 17:49:17.995: E/AndroidRuntime(10085): at android.widget.Toast.<init>(Toast.java:97)
08-27 17:49:17.995: E/AndroidRuntime(10085): at android.widget.Toast.makeText(Toast.java:254)
运行第一行时:
public static void alertUser(String str)
Toast toast = Toast.makeText(mInstance.getApplicationContext(), str,
Toast.LENGTH_LONG);
toast.show();
我该如何解决这个问题?
【问题讨论】:
好像你正在从一个线程更新用户界面 【参考方案1】:这样的事情应该可以工作:
public static void alertUser(String str)
runOnUiThread(setErrorMessage);
private Runnable setErrorMessage = new Runnable()
@Override
public void run()
Toast toast = Toast.makeText(mInstance.getApplicationContext(), str,
Toast.LENGTH_LONG);
toast.show();
;
【讨论】:
但在这个答案上,他们提出了其他建议:***.com/questions/18467470/…以上是关于无法在未调用 Looper 的线程内创建处理程序 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
无法在未调用 Looper.prepare()3 的线程内创建处理程序
无法在未调用 Looper.prepare() 的线程内创建处理程序
无法在未调用 Looper.prepare() 的线程内创建处理程序