Android 将字符串放入处理程序

Android 将字符串放入处理程序,android,string,bundle,handler,msg,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.get

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


}
}

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

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

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

是b null,还是键为null?这是一个好问题。当我拿到包裹时,它是空的。。(Bundle[{}]),但当我发送它时,它是满的
(msg.getData().toString()=(Bundle[{note=4.25,fach=math})
是b null,还是键是null?这是个好问题。当我收到它时,它是空的…(Bundle[{}]),但当我发送它时,它是满的
(msg.getData().toString()(Bundle[{note=4.25,fach=math})