首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android,Handler messaging

Android,Handler messaging
EN

Stack Overflow用户
提问于 2011-07-24 11:39:06
回答 2查看 25.8K关注 0票数 7

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

代码语言:javascript
复制
 Handler seconds=new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
      bar.incrementProgressBy(5); 
      tView1.setText("r:"+msg);
    } 
  }; 

我的帖子是:

代码语言:javascript
复制
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 
                } 
              } 
            }); 

正如您在上面看到的,我正在尝试更改消息中"what“的值,以便可以根据消息执行不同的操作,但根据"tView1.setText("r:"+msg)”,"what“的值不会更改为5 :(

它只显示"what=0

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

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-24 11:50:19

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

代码语言:javascript
复制
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));
    } 
  }; 
票数 7
EN

Stack Overflow用户

发布于 2011-07-24 11:50:17

您需要以与获取消息相同的方式提取消息:

代码语言:javascript
复制
public void handleMessage(Message msg) { 
  bar.incrementProgressBy(5); 
  Bundle data = msg.getData();
  tView1.setText("r:"+data.getInt("what"));
} 

很抱歉在前面的回答中没有澄清这一点...

附注:为了简单起见,我忽略了对null的检查,但您应该检查data是否为null...

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6804788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档