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

标签 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


}
}

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

最佳答案

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

关于android - 将字符串放入处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13218310/

相关文章:

无缘无故发生Java错误 "This method must return a result of type string"

symfony - Symfony2 中的通知包

xcode - 如何设置分发版本以使 watchkit 应用程序正常工作?

ios - iOS 是否可以并允许下载资源包并从中加载一些字符串?

java - 验证输入日期

java - 更改图标 BiometricPrompt android

ios - 为什么我的代码没有删除字符串的空格?

android - 在 Android 中没有 Intent 的情况下创建一个重复事件提醒直到特定日期?

android - webview 中的 scale 和 zoom 有什么区别?

python - 连接字符串的每两个字符