我試圖通過一個Intent對象將一個Address對象數組傳遞給另一個Activity。如何將一個Address對象數組傳遞給另一個Acitvity
由於Address類實現了Parcelable接口,我嘗試執行以下操作。我從Geocoder對象中獲得了一個List Address對象,我將其轉換爲一個Address對象數組。然後我將這個數組放入Intent中並調用活動。
final Address[] addresses = addresseList.toArray(new Address[addresseList.size()]);
final Intent intent = new Intent(this, SelectAddress.class);
intent.putExtra(SelectAddress.INTENT_EXTRA_ADDRESSES, startAddresses);
startActivityForResult(intent, REQUEST_CODE_ACTIVITY_SELECT_ADDRESSES);
在另一個活動中,我嘗試從以下代碼片段的Intent中檢索Address []。但最後一行的調用以ClassCastException Landroid.os.Parcelable
結束。
Bundle bundle = getIntent().getExtras();
Address[] addresses = (Address[]) bundle.getParcelableArray(INTENT_EXTRA_ADDRESSES);
我在做什麼錯?我該如何檢索地址[]。
「嗨,我想通過一個Intent對象傳遞地址對象到另一個活動的數組。」 - 爲什麼?對我而言,在活動之間傳遞複雜對象是一種代碼味道。將'Intent' extras想象成URL上的GET參數。如果這些是兩個Web頁面,您是否會在鏈接中的URL上傳遞一堆'Address'對象作爲GET參數?假設傳遞一個'Address'對象數組是不可避免的,那麼返回的對象類型是什麼? 'ClassCastException'行應該告訴你。 – CommonsWare 2010-09-05 19:34:47
ClassCastException提到的類型是Landroid.os.Parcelable。 – Flo 2010-09-05 19:50:26
關於您將複雜對象數組傳遞給活動的問題。當第一個活動中的地址搜索返回了多個結果時,我想要做的是爲用戶提供第二個活動,他可以從地址列表中進行選擇。你如何實現這一點,而不需要將地址傳遞給第二個活動,以便在微調器中顯示它們,因此用戶可以選擇其中的一個? – Flo 2010-09-05 20:02:33