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

これは多くのコードではありませんが、new Message() の代わりに Message.obtain() を使用してみます。handleMessage() で受信しているメッセージが、handler.sendMessage() で送信したメッセージであるとは確信できません。sendMessage() と handleMessage() の両方を同じスレッドで呼び出す必要があり、ハンドラーの MessageQueue に他の Message オブジェクトを入れていないことを確認する必要があります。

于 2012-11-04T19:28:07.270 に答える