昨晚帶女友Android入門,她本是照着一本書敲得,可以運作,後來她自己憑思維自己寫了一個,然後出現了值沒有傳過來的問題,然後簡單的了解了一下Intent是如何傳遞資料的。
我們的例子是這樣的:
由A Activity通過startActivityForResult方法啟動B Activity,然後由B将某個字元串傳回給A,由于我女友的疏忽,key不小心寫錯了,當時我們使勁的找,卻沒發現問題,當時是這麼找的,下面這段代碼是B回傳字元串值給A:
當時的調試資訊是這樣的:

Intent裡面沒有任何問題,我們确定已經把要傳遞的值放了進去,并且intent.mExtras.mMap的值不為空,但是,我們從A裡面拿到的Intent對象intent.mExtras.mMap的值卻為空!!這樣我們百思不得其解,看:
注意到data.mExtras.mMap後面了嗎?它居然是Null!!!這頓時就讓我匪夷所思了,這是為什麼呢,讓我們去Intent内部一探究竟:
在Intent内部有這麼一段代碼:
它是将資料放入一個Bundle屬性裡面去了,那再去mExtras裡面看看:
我們可以看到在Bundler内部的mMap是有值的這個時候,咦?這是怎麼回事呢?我們可以看到在mMap.get方法執行之前有個方法叫:unparcel();,那是不是在這個方法内部有蹊跷呢?
我們在unparcel方法内部看到,這個時候mMap是被指派并且使用readMapInternal方法從某個地方讀了出來(具體怎麼讀暫不去深究)。噢,原來就是這樣。你們明白了嘛?