Android,Handler消息传递

Rya*_*yan 6 messaging android handler

我有一些非常简单的代码来处理程序:

 Handler seconds=new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
      bar.incrementProgressBy(5); 
      tView1.setText("r:"+msg);
    } 
  }; 
Run Code Online (Sandbox Code Playgroud)

我的主题是:

Thread seconds_thread=new Thread(new Runnable() { 
              public void run() { 
                try { 
                  for (int i=0;i<20 && isRunning.get();i++) { 
                    Thread.sleep(1000); 

                    Message m = new Message();
                    Bundle b = new Bundle();
                    b.putInt("what", 5); // for example
                    m.setData(b);
                    seconds.sendMessage(m);



                  } 
                } 
                catch (Throwable t) { 
                  // just end the background thread 
                } 
              } 
            }); 
Run Code Online (Sandbox Code Playgroud)

正如你在上面看到的那样我试图改变what消息中" " 的值,所以我可以根据消息做不同的事情,但根据" tView1.setText("r:"+msg)" " "的值what不会改为5 :(
它只是显示" what=0"

如何更改Message的值以便我可以根据消息执行不同的操作?

谢谢!

Nik*_*ski 7

您必须从您在处理程序中发送的消息(作为Bundle,然后作为int)获取数据:

Handler seconds=new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
      int sentInt = msg.getData().getInt("what");
      bar.incrementProgressBy(5); 
       tView1.setText("r:"+Integer.toString(sentInt));
    } 
  }; 
Run Code Online (Sandbox Code Playgroud)