1

我有一个小问题。我尝试给处理程序一个字符串。我试过 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


}
}

希望您能够帮助我。对不起英语不好:)

4

1 回答 1

1

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

于 2012-11-04T19:28:07.270 回答