把字符串放在Handler中

时间:2012-11-04 11:59:21

标签: android string bundle handler msg

我有点问题。我试着给一个处理程序一个字符串。 我用bundle.putString(“key”,“String”)尝试了它; ,但如果我尝试获取字符串,我得到nullpointerException。有人能告诉我我做错了吗?

代码:

 Message msg = new Message();
 Bundle b = new Bundle();

 b.putString("note","4.25");
 b.putString("fach", "Math");
 Log.d("DEBUG ",b.getString("note")+"  "+fach); //--> Here isn't a nullPointerException
 msg.setData(b);
 handler.sendMessage(msg);

 private Handler handler = new Handler() {

       @Override
       public void handleMessage(Message msg) {
Bundle b = msg.getData();
    Log.d("DEBUG,HANDLER","note "+b.getString("note")+" fach"+b.getString("fach")); //Throws 2 times null


}
}
希望你能帮助我。抱歉英文不好:)

1 个答案:

答案 0 :(得分:1)

这不是很多代码,但我会尝试使用Message.obtain()而不是新的Message()。我不相信你在handleMessage()中收到的消息是你在handler.sendMessage()中发送的消息。必须在同一个Thread上调用sendMessage()和handleMessage(),并且必须确保不能在处理程序的MessageQueue中放置任何其他Message对象。