2014-02-13 257 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