android 开发中,在子线程中进行界面操作,很容易就会报出Can't create handler inside thread that has not called Looper.prepare()这个问题,碰到这个问题最常用的办法,就是创建handler 然后在handler的handlerMessage()方法中进行界面操作,可是 也有些特殊的情况比如我今天遇到的:我有两个类,A,B,A是主项目,B是需要打成jar包放入A项目的lib中的,这个时候我想在B项目的方法中调Toast.makeText(),A项目中在子线程中调这个方法,会提示这个错误,因为A项目不是只有一个地方会调这个方法,所以不想在A项目里创建Handler,于是在B项目创建Handler把Toast.makeText()放进去,但是运行后发现还是会报这种错误 。
最后的解决办法:在调用Toast(或者AlertDialog)的地方的前面加上Looper.prepare(),后边加上Looper.loop()即可解决问题。
比如说:
Looper.prepare();
ToastUtils.show(context,"xxxxxx");
Looper.loop();