报错:Can't create handler inside thread that has not called Looper.prepare()
原因:Toast不能直接在子线程中调用显示
场景:在子线程中进行了数据操作,并且用handler发送刷新ui并打印Toast
原代码如下:
new Thread(new Runnable() { public void run() { try { EMClient.getInstance().groupManager().addUsersToGroup(groupId, newmembers); Qiuutil.ShortToast("已经添加群成员"); listuser.get(position).put("1","1"); handler.sendEmptyMessageDelayed(2,500); } catch (Exception e) { Qiuutil.ShortToast("添加失败"); } } }).start();
报错之后加上Looper.prepare();Looper.loop();中包裹handler和Toast 就不会报错,代码如下:
new Thread(new Runnable() { public void run() { try { EMClient.getInstance().groupManager().addUsersToGroup(groupId, newmembers); Looper.prepare(); Qiuutil.ShortToast("已经添加群成员"); listuser.get(position).put("1","1"); handler.sendEmptyMessageDelayed(2,500); Looper.loop(); } catch (Exception e) { Qiuutil.ShortToast("添加失败"); } } }).start();