开发者

Android, Handler messaging

开发者 https://www.devze.com 2023-03-22 07:07 出处:网络
I have some very simple code to do with handlers: Handler seconds=new Handler() { @Override public void handleMessage(Message msg) {

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

精彩评论

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