gpt4 book ai didi

android - Firestore 如何使用 Geopoint 放置额外对象

转载 作者:太空宇宙 更新时间:2023-11-03 13:43:26 24 4
gpt4 key购买 nike

实现可序列化的对象非常有用,因为可以传入一个额外的 Intent :

Intent intent = new Intent(this, SomeActivity.class);
intent.putExtra("key", someObject);
startActivity(intent);

然后在另一个Activity中获取:

MyObjectUsinGeoPoint Object = (MyObjectUsinGeoPoint) getIntent().getSerializableExtra("key");

问题是,我遇到了这个错误:

Caused by: java.io.NotSerializableException: com.google.firebase.firestore.GeoPoint

我尝试通过在我的模型中创建一个内部类来使 GeoPoint 实现 Serializable:

private class GeoBetter extends GeoPoint implements Serializable {

public GeoBetter(double v, double v1) {
super(v, v1);
}
}

然后在构造函数中初始化:

public MyObjectUsinGeoPoint(double latitude, double longitude) {
geoPoint = new GeoBetter(latitude, longitude);
}

但是我得到了另一个错误:

Caused by: java.io.InvalidClassException: com.domain.tupas.models.MyObjectUsinGeoPoint$GeoBetter; no valid constructor

如何为包含不可序列化对象的 Intent 添加额外的内容?

最佳答案

你可以试试下面的方法:

private GeoPoint location;

@Override
public void writeToParcel(Parcel parcel, int i)
{
parcel.writeDouble(location.getLatitude());
parcel.writeDouble(location.getLongitude());
}

public UserModel(Parcel in)
{
Double lat = in.readDouble();
Double lng = in.readDouble();
location = new GeoPoint(lat, lng);
}

如果类不是太复杂(比如 GeoPoint),它就可以工作,否则你需要找到不同的方法。

关于android - Firestore 如何使用 Geopoint 放置额外对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46851997/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com