[英]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.