我的應用程序使用外部庫以JAR文件的形式查詢服務。當我查詢這個服務時,我得到一個對象列表(一般使用對象,而不是對象),它們沒有以當前的形式實現Parcelable。我需要在活動之間發送這些對象之一,所以我假設我需要以某種方式使它們實現Parcelable。但是,如果它們不是我的對象,我不知道該怎麼做,並且我在網上找到的所有教程似乎只處理作者爲他自己的項目創建的對象。如何在外部對象上實現Parcelable?
任何幫助將不勝感激。讓我知道我是否需要澄清一些事情。
我的應用程序使用外部庫以JAR文件的形式查詢服務。當我查詢這個服務時,我得到一個對象列表(一般使用對象,而不是對象),它們沒有以當前的形式實現Parcelable。我需要在活動之間發送這些對象之一,所以我假設我需要以某種方式使它們實現Parcelable。但是,如果它們不是我的對象,我不知道該怎麼做,並且我在網上找到的所有教程似乎只處理作者爲他自己的項目創建的對象。如何在外部對象上實現Parcelable?
任何幫助將不勝感激。讓我知道我是否需要澄清一些事情。
另一種選擇是使用你的應用程序來存儲這些對象。簡單的子類應用,使它成爲一個獨立的,並在你的Manifest.xml聲明它
public class MyApplication extends Application {
private static final MyApplication instance;
public static MyApplication getInstace() {
return instance;
}
public void onCreate() {
instance = this;
}
private MyObject myObj;
public MyObject getMyObject() {
return this.myObj;
}
public void setMyObject(MyObject myObj) {
this.myObj = myObj;
}
}
那麼以後你可以存儲它:
MyApplication.getInstance().setMyObject(anObject);
,並恢復它:
MyObject anObject = MyApplication.getInstance().getMyObject();
記住即:
假設你可以實例化對象自己的新副本,您可以隨時使用的組成和實現自己的Parcelable數據傳輸對象做轉移:
在PObject上創建一個方法,該方法返回未實現Parcelable的對象的完全實例化副本。
您現在應該可以使用PObject實現來傳輸對象。
Parcelable interface的文檔顯示了一個傳遞整數的基本示例。
當然,這裏假設你需要Parcelable:如果活動在同一個進程中,你可能只需要使用全局靜態傳遞它們。它不是最漂亮的,但它通常足夠好。
這工作,謝謝。我想通過將對象傳遞給活動來做到這一點(也許最終我會改變它在未來以這種方式工作),但現在這是最簡單和最有效的解決方案。 – jnevelson 2011-05-18 02:57:39
我不明白你爲什麼要讓MyApp成爲單身人士,因爲操作系統似乎創建了MyApp的_single_實例,並且getApplicationContext()似乎總是返回操作系統創建的MyApp的單個實例。這樣「全局訪問點」將返回該類的單個實例。 – JAL 2011-05-18 03:46:09
@JAL是的,它只是爲了方便起見,否則你將需要像getApplicationContext()這樣的東西,然後將它轉換爲你的Application類。請注意,instace是在重寫的onCreate方法中分配的,因此它與OS創建的相同。 – aromero 2011-05-18 12:39:21