[英]How to use a Serializable class
我將Backendless用作后端服務,它提供了一個名為BackendlessUser
的類用於保存和檢索用戶。 我試圖通過將其作為Serializable
額外對象傳遞給Android上兩個活動之間傳遞一個User:
Intent intent = new Intent(PeopleActivity.this, ConversationActivity.class);
intent.putExtra("withUser", contacts.get(position));
startActivity(intent);
由於類BackendlessUser
實現了Serializable
。 但是,當我運行它時,它給了我這個錯誤:
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.backendless.BackendlessUser)
at android.os.Parcel.writeSerializable(Parcel.java:1468)
at android.os.Parcel.writeValue(Parcel.java:1416)
....
Caused by: java.io.NotSerializableException: java.lang.Object
....
我認為,由於該變量:
public final class BackendlessUser implements Serializable {
private final Map<String, Object> properties = new HashMap<String, Object>();
...
考慮到我無法修改BackendlessUser
類,如何解決此問題?
無需傳遞對象,您可以將對它的引用保存為單例,以便在活動之間可用。
您可以擴展Application類並保存在那里。 Application類在您的應用程序運行時一直存在,並且是單例。
public class MyApp extends Application {
public BackendUser currentUser;
}
然后:
((MyApp)getApplication()).currentUser
您應該使用Parcelable
在活動之間傳遞對象。 Parcelable
是Android的Serializable
版本,因此您可以使用。 您可以在此處找到有關Parcelable
更多信息。
如果您不能修改后端用戶,那么最好的選擇是使用Alexanders建議並創建User
的Singleton
實例。 這將允許您從任何活動中創建/更新用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.