你如何在 Kotlin 中将 Parcelable 序列化为字符串?

问题描述

我正在 Kotlin 中编写一个 Android 应用程序,并希望将位置类型作为字符串存储到 sqlite 中。位置是一个 Parcelable。 Parcelable 是否有序列化为字符串的方法

我想做这样的事情:

var loc:Location
var str:Sring

... Code to Initialize 'loc'...

str = loc.serilizetoString()

解决方法

您可以将对象转换为 Parcel,然后获取字节(通过调用 Parcel.marshall())并将它们转换为 String 并存储,但您将依赖于Location 的内部实现。更好的方法是编写您自己的方法,将您需要的数据从 Location 对象序列化为 String。例如,像这样:

String s = String.format("%s|%e|%e|%f|%f",location.getProvider(),location.getLatitude(),location.getLongitude(),location.getSpeed(),location.getBearing()
);

当您从数据库中读取它时,您只需要将您的 String 解析为组件部分,创建一个新的 Location 对象并在其上设置各个组件。像这样:

String s; // Location as String
String[] parts = s.split("|");
Location location = new Location(parts[0]);
location.setLatitude(Double.valueOf(parts[1]));
location.setLongitude(Double.valueOf(parts[2]));
location.setSpeed(Float.valueOf(parts[3]));
location.setBearing(Float.valueOf(parts[4]));

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...