2012-11-04 61 views
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 


} 
} 

希望你能幫助我。對不起英文:)

+0

是b null還是鍵爲空? – Simon

+0

這是一個很好的問題。 (Bundle [{}]), 但是當我發送它時,它已滿[(msg.getData()。toString()=(Bundle [{note = 4.25,fach =數學})' –

回答

1

這不是很多代碼,但我會嘗試使用Message.obtain()而不是新的Message()。我不相信你在handleMessage()中收到的消息是你在handler.sendMessage()中發送的消息。 sendMessage()和handleMessage()都必須在同一個線程上調用,並且必須確保沒有在處理程序的MessageQueue中放置任何其他Message對象。