2014-02-13 152 views
0

我試圖將響應對象(soapobject)發送到其他活動。如何在活動之間傳遞對象實例

注意:我沒有創建對象,它是從we​​b服務接收到的響應。

我在第一個活動的邏輯是,如果響應中包含一個或更多的結果,然後將其發送到用於進一步處理的下一個活動(否則顯示「no results」消息)

MY問題:putExtra不支持發送non serilaizednon parcelable object

錯誤消息:The method putExtra(String, boolean) in the type Intent is not applicable for the arguments (String, SoapObject)

這裏是我的代碼有什麼建議?

SoapObject soapResponse = soaphttp.fetchNextCatalogueRange(0, numberOfItems); 
Intent ResultsActivityIntent = new Intent(MainActivity.this,SearchResultsActivity.class); 
// Send data object with the Intent 
ResultsActivityIntent.putExtra("ResultObj", soapResponse); 
startActivity(ResultsActivityIntent); 
+0

http://stackoverflow.com/questions/2736389/how-to-pass-object-from-one-activity-to-another-in-android – user2450263

+1

你應該實現'Parcelable'。看看這個答案[如何在活動之間傳遞對象](http://stackoverflow.com/questions/2736389/how-to-pass-object-from-one-activity-to-another-in-android) – Apoorv

+0

不能使用因爲我沒有創建對象,所以我將它作爲搜索結果接收,而不是可以投射的。 – user1882582

回答

1

創建常量類

在該類中創建SoapObject。

Class Constant 
{ 
    public static SoapObject sopObj=null; 
} 

那麼在這裏,

SoapObject soapResponse = soaphttp.fetchNextCatalogueRange(0, numberOfItems); 
    Intent ResultsActivityIntent = new Intent(MainActivity.this,SearchResultsActivity.class); 

//使用意向

Constant.sopObj=soapResponse; 

     startActivity(ResultsActivityIntent); 

發送的數據對象在下一節課

get that soapObject value like this, 

    SoapObject sopObject=Constant.sopObj; 

洙簡單...

+0

謝謝。這是一個很好的替代解決方案,使用所有活動都能看到的常量....但我仍然想知道如何恰當地使用意圖,因爲我認爲它的更好的做法。 – user1882582

0

也有另一種選擇......使用GSON和你的對象轉換成JSON字符串,包串將它傳遞給你的活動,並再次使用GSON從JSON字符串轉換回你目的。

+0

謝謝。我不熟悉如何做到這一點,有沒有任何指針? – user1882582

+0

檢查了一下,它確實很好的記錄了... https://sites.google.com/site/gson/gson-user-guide –

+0

沒有成功......我試過gson.toJson(soapResponse),並得到一個錯誤 - > java.lang.UnsupportedOperationException:試圖序列化java.lang.Class:org.ksoap2.serialization.SoapPrimitive。忘記註冊一個類型適配器? – user1882582