Android 在thread中Toast不能显示的问题

第一种方法:

改写代码前是:

Toast.makeText(getApplicationContext(),"test",Toast.LENGTH_LONG).show();

改写后:

Looper.prepare();

Toast.makeText(getApplicationContext(),"test",Toast.LENGTH_LONG).show();

Looper.loop();

如果不是在主线程中又开启了新线程的话,一般都会碰到这个问题。

原因是在创建新县城的时候默认情况下不会去创建新的MessageQueue。

第二种方法:

Handler handler = new Handler() {  

    @Override  

    public void handleMessage(Message msg) {  

        // TODO Auto-generated method stub  

        if (msg.what == 0) {  

            Toast.makeText(getApplicationContext(), "test", Toast.LENGTH_LONG).show();  

        }  

        super.handleMessage(msg);  

    }  


};  

Message msg = handler.obtainMessage();  

msg.what = 0;  

handler.sendMessage(msg);  

线程里面不能进行UI操作的,可以在线程里面用handler发送信息,然后再显示UI,比如就把你的toast改成handler.sendEmptyMessage()。。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言:toast再常见不过,但是一个小小的toast居然内有乾坤,呵(w)呵(t)呵(f) 源码如下: publi...
    super超_9754阅读 5,206评论 0 0
  • Android中的消息机制,消息的发送和接收过程以及与线程之间的关系。虽然我们经常使用这些基础的东西,但对于其内部...
    Sunny君907阅读 3,798评论 0 1
  • Toast是一个View视图,快速的为用户显示少量的信息。Toast在应用程序上浮动显示信息给用户,它永远不会获得...
    cxm11阅读 3,517评论 0 4
  • 想要“佛系”不容易 “佛系”对于我真是一个新名词,刚开始以为是信佛人的俗语,和佛有关的事情,我参不透,可想了解。 ...
    碧晴天阅读 3,677评论 1 2
  • 这样浩浩荡荡11个大人和两个小朋友的家族旅行好像还是第一次。当提出这个想法到具体成行也不过一个月时间,看来我家效...
    米菲的游乐园阅读 1,898评论 0 1