开发者

Android, Handler messaging

I have some very simple code to do with handlers:

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

And my thread:

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 
                } 
              } 
            }); 

As you can see above i am trying to change the value of "what" in the message, so i can do different things based on the message, but according to "tView1.setText("r:"+msg)" the value of "what" is not changing to 5 :(

it is only showing "what=0"

How do I change the values of Message so that I can do different things based on the message?

Thanks!


You must get the data from the Message (as Bundle then as int) you have sent in the handler you do:

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));
    } 
  }; 


You need to extract the message in the same way you got it:

public void handleMessage(Message msg) { 
  bar.incrementProgressBy(5); 
  Bundle data = msg.getData();
  tView1.setText("r:"+data.getInt("what"));
} 

Sorry for not clarifying that in the previous answer...

P.S. I ignored checking for null for simplicity, but you should check if data is null...

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜