我有点问题。我试着给一个处理程序一个字符串。 我用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
}
}
希望你能帮助我。抱歉英文不好:)
答案 0 :(得分:1)
这不是很多代码,但我会尝试使用Message.obtain()而不是新的Message()。我不相信你在handleMessage()中收到的消息是你在handler.sendMessage()中发送的消息。必须在同一个Thread上调用sendMessage()和handleMessage(),并且必须确保不能在处理程序的MessageQueue中放置任何其他Message对象。