码迷,mamicode.com
首页 > 编程语言 > 详细

关于子线程使用Toast报错Can't create handler inside thread that has not called Looper.prepare()的解决办法

时间:2014-11-21 01:17:50      阅读:946      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   os   使用   sp   on   

形同如下代码,在Thread中调用Toast显示错误信息:

new Thread(new Runnable(){
            @Override
            public void run() {
                try{
                weatherData = getWeatherData(strUrl);
                parseJson(weatherData);
                }catch(Exception e){
                    Toast.makeText(WindowApplication.getAppContext(), e.toString(), Toast.LENGTH_SHORT).show();
                    Log.i("wytings",e.toString());
                }
            }
        }).start();

一运行,就会报错Can‘t create handler inside thread that has not called Looper.prepare(),因为Toast的初始化函数中,自己开了个线程new Handler();所以使得当前的Toast要是不在主线程就会报错。

解决办法如下,在Toast上下添加Looper.prepare();和Looper.loop();

Looper.prepare();
Toast.makeText(WindowApplication.getAppContext(), e.toString(), Toast.LENGTH_SHORT).show();
Looper.loop();

 

关于子线程使用Toast报错Can't create handler inside thread that has not called Looper.prepare()的解决办法

标签:style   blog   io   ar   color   os   使用   sp   on   

原文地址:http://www.cnblogs.com/wytings/p/4111785.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!