android - 将字符串放入处理程序

我有一个小问题。我尝试将字符串提供给处理程序。
我试过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.obtain()而不是新的Message()。我不相信您在handleMessage()中收到的消息就是您在handler.sendMessage()中发送的消息。 sendMessage()和handleMessage()都必须在同一线程上调用,并且必须确保没有在处理程序的MessageQueue中放入任何其他Message对象。

本文翻译自 https://stackoverflow.com/questions/13218310/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 android string bundle handler msg


相关文章:

android - 与普通Java类中的android活动进行通信

java - Android - 无法在模拟器上获取gps位置

java - 这个程序如何进行?

c++ - sstream无法正常工作...(仍然)

android - 如何从Android中的电话簿和SIM卡获取所有联系人?

c# - 为什么非普通字符串不能包含换行符?

c# - MVC4 Bundles返回404

mysql - 通过数据库更改Magento捆绑产品价格类型

javascript - 哪些VS magic提供了“ .js.bundle”功能来组合JavaScript文件?

android - 人脸检测API坐标