我无法接收从线程发送到UI

时间:2015-09-11 16:02:37

标签: android string multithreading toast android-handler

这是我的徒手:

   public Handler handler = new Handler(){

    @Override
    public void handleMessage(Message msg) {
       super.handleMessage(msg);
        String mmsg = msg.getData().getByteArray("msg").toString();
        Toast.makeText(clientActivity.this, mmsg,Toast.LENGTH_LONG).show();

    }

};

我从单独的线程发送数据:

    public class client implements Runnable
{
    private void showtoast(byte[] msgtoshow){
        try {
            Bundle mbundle = new Bundle();
            Message greeting = new Message();
            mbundle.putByteArray("msg", msgtoshow);
            greeting.setData(mbundle);
            handler.sendMessage(greeting);
        }catch(Exception e){
            Log.d("error",e.getMessage());
        }
    }

    public void run()
    {
      msgstrng = "this is supposed to be some text";
      showtoast(msgstrng.getBytes());
    }

} 而不是我在msgstng中发送的行,而是一些总是不同的[B @ 411dd11]。我猜它是时间戳或smth。如何获得字符串值msgstng? 实际上对我来说更重要的是获取字节数组,因为如果我知道这个问题,我会将位图从socket发送到UI

1 个答案:

答案 0 :(得分:0)

问题似乎是你在Handler中获取字符串的方式。

尝试这样的事情:

String mmsg = new String(msg.getData().getByteArray("msg"));