问题标签 [parcel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4242 浏览

android - 无法将 Parcel 实现的类从一个活动检索到另一个活动

我有一个Weekly Result实现 Parcel 接口的类。当我将包裹对象传递给另一个活动时,我在检索包裹对象时遇到问题。

这是我的weeklyResult课:

这是我的Multilinqual课:

这是我发送意图的对象的地方:

这是我试图接收包裹对象的活动类:

我什至尝试将对象投回,但仍然出现错误。Logcat 错误向我显示了此错误,但我已经为每周结果实现了一个创建者类

LogCat 错误:

致命异常:主要
java.lang.RuntimeException:无法启动活动

ComponentInfo{com.example.laysapp/com.example.laysapp.AdminPage.Topic_of_the_week}: android.os.BadParcelableException:Parcelable 协议需要在类 com.example.laysapp.ParsingLogic.WeeklyTopicResult E/AndroidRuntime
上名为 CREATOR 的Parcelable.Creator 对象(
1231):
在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
在 android.app.ActivityThread.access$600(ActivityThread.java:141)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
在 android.os.Handler.dispatchMessage(Handler.java:99)
在 android.os.Looper.loop(Looper.java:137) 在 android.app.ActivityThread.main(ActivityThread.java:5039) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect .Method.invoke(Method.java:511) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) ) 在 dalvik.system.NativeStart.main(Native Method) 引起:android.os.BadParcelableException:Parcelable 协议需要一个 Parcelable.Creator 对象,在 android.os.Parcel 的类 com.example.laysapp.ParsingLogic.WeeklyTopicResult 上称为 CREATOR。 readParcelable(Parcel.java:2086) 在 android.os.Parcel.readValue(Parcel.java:1965) 在 android.os.Parcel.readMapInternal(Parcel.java:2226)在android.os.Bundle.unparcel(Bundle.java:223)在android.os.Bundle.getParcelable(Bundle.java:1165)在com.example.laysapp.AdminPage.Topic_of_the_week.onCreate(Topic_of_the_week.java:40 ) 在 android.app.Activity.performCreate(Activity.java:5104) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) ... 11更多的callActivityOnCreate(Instrumentation.java:1080) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) ... 11 更多callActivityOnCreate(Instrumentation.java:1080) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) ... 11 更多

我在这里做错了什么?

0 投票
1 回答
3364 浏览

android - 如何读/写列表到一个包裹?

我有一个实现Parcelable. 将 a对象读/写到 a 的最佳方法List是什么?DateParcel

这是您可以为单个Date对象执行此操作的方法:

但是怎么做呢List<Date>

我想写的笨拙的方法是遍历所有Date对象并构造 a long[],如下所示:

要阅读,你可以这样做:

但我希望会有更好的东西......

0 投票
1 回答
514 浏览

android - Parcelable 的变量在 Parcel 之后的值始终为 0.0

在我打包我的 Parcelable 对象并想要返回它之后,变量的值都是 0.0!任何想法为什么?

这是我的 Parcelable 类:

以下是我创建 Parcel 并返回 Parcelable 的方法:

谢谢

0 投票
2 回答
9921 浏览

java - 如何在 Parcel 中使用 writeStringArray() 和 readStringArray()

Parcel我最近在 Androids类中遇到了一个非常愚蠢的(至少从我的角度来看)实现。

假设我有一个像这样的简单类

现在,如果我想 Parcel 一个FooObject 并且bars为 null,我认为无法从这种情况中恢复(当然除了捕获异常)。以下是 Parcel 中这两种方法的实现:

bars因此,如果我通过了哪些为空,则writeStringArray 很好。它只是写入-1包裹。但是 readStringArray 方法应该如何使用呢?如果我通过bars内部(当然是 null),我会从val.length. 如果我bars之前创建,就像说bars = new String[???]我不知道​​它应该有多大。如果大小与里面写的不匹配,我会收到一个 RuntimeException。

为什么readStringArray不知道-1哪个结果被写入空对象writeStringArray并返回?

我看到的唯一方法是bars在调用之前保存大小,writeStringArray(String[])这使得这种方法毫无用处。它还将重复保存数组的大小两次(一次让我记住,第二次来自writeStringArray)。

有谁知道这两种方法应该如何使用,因为上面没有 java-doc?

0 投票
1 回答
1729 浏览

sql - 显示包含建筑物质心的地块的空间 SQL 查询

我正在尝试编写一个查询来选择包含某个建筑代码(bldg_code = 3)的质心的地块。

宗地列在“city.zoning”表中,并包含一个用于每个宗地的 PIN、几何和面积的列。表“buildings”包含 bldg_type 和 bldg_code 列,指示建筑物类型及其对应的代码。此查询感兴趣的建筑物类型的 bldg_code 为 3。

到目前为止,我已经开发了一个查询来显示与感兴趣的建筑物类型交互的地块:

有任何想法吗?

0 投票
1 回答
1240 浏览

java - 在 Parcelable 中写入/读取数组或字符串数​​组

为了在我的应用程序中的 2 个活动之间传递一个对象,我让该类实现 Parcable 并且一切正常。现在我想用一个字符串数组 (String[][]) 来扩展这个类。

我在互联网上搜索了一段时间,但我找不到writeToParcel(Parcel dest, int flags)在 Constructor 处和中处理此问题的方法MyClass(Parcel in)

另一种选择是创建一个只有 2 个字符串 stringA 和 stringB 的类,并让该类也实现 Parcable。然后我可以使用 readList() 和 writeList() 来编写 Parcables 的列表,但这似乎不是一个理想的解决方案。

有什么建议么?

0 投票
1 回答
238 浏览

java - 传递一个可包裹的数组列表

我想在活动之间传递一个包含 2 个对象的可打包数组

但是当我尝试在另一个活动中读取我的数组列表时

我收到以下错误:03-27 16:26:46.842: E/AndroidRuntime(12495): java.lang.ClassCastException: java.lang.Boolean cannot be cast to com.dev.pojo.Language当它尝试读取列表的第二个对象时(显示第一个对象)

我不明白为什么它说布尔值,因为我的对象中没有任何布尔值

非常感谢

0 投票
3 回答
5559 浏览

android - 保存 Parcelable 数据

我有一个实现 Parcelable 的类,但无法实现 Serializable,因为它包含一些我无法修改的基本 Android 类。

此类中的一些对象例如 Location 和 PendingIntent (它们都可以方便地 Parcelable)。

我的问题是在我的主要活动实例之间保存这些信息。

目前,我持有对此类的静态引用,效果很好。但我假设当我重新安装应用程序时,并且可能会出现更新时,我将无法相信这个静态成员不会被重新初始化。

我试图将此 Parcelable 写入文件,但使用 marshall() 并不总是有效(我收到 Binder 无法编组错误)。

我怎样才能安全地保存这些信息?

谢谢

0 投票
2 回答
7875 浏览

google-maps-api-3 - 如何获取包裹或邮政编码边界以在地图中显示?

我想为指定的土地添加边界,以便它在地图中以彩色轮廓/边界突出。在谷歌地图中,​​如果您知道要输入的围绕地块的坐标路径,则可以使用多边形功能完成此操作。但是,我没有多边形路径信息,但我确实拥有该位置的地理编码坐标以及该宗地的评估员宗地编号 (APN)。

我发现了另一个 SO 帖子,其中谈到了如何使用免费的人口普查局数据和一些开源软件来获取邮政编码的多边形,但它涉及的非常多(因为你必须下载和托管数据),我不确定它是否会精确到包裹边界。如果它支持包裹,这绝对是一种选择,但它看起来非常耗时,尽管它是免费的。

我还找到了一个名为ParcelStream的付费解决方案(未显示价格) ,但认为它很昂贵,可能只是在其他 SO 帖子中使用上述解决方案。如果一次性费用很小,这也是一种选择,但如果费用昂贵或订阅费则不行。

我知道您可以在地图上手动创建叠加层,保存然后共享它们,但我正在寻找一种自动化/程序化的解决方案。

更新:好的,来自 Digital Map Products 的 ParcelStream不是一个选项,每月大约 10k。他们建议订阅服务旨在覆盖全国(而非本地),谷歌是他们的客户之一。

更新#2:使用上面提到的美国人口普查局数据解决方案(与其他开源软件相结合)在浏览其TIGERweb2010网站上可用的功能后,似乎无法提供地块的边界数据。

0 投票
1 回答
2389 浏览

android - 我将如何在 Java/Android 的对象哈希中正确实现 parcel/parcelable

我有以下课程:实验和测量。我在 Android 活动之间传递一个包含 Experiment 对象的 HashMap 作为值,并将它们的 Experiment.getExperimentName 作为键。

这些 Experiment 对象又包含一个 Measurements 对象的 HashMap。这个 HashMap 有一个 Measurements 对象作为值,它们的 Measurements.getMeasurements 作为键。

这些测量对象然后包含一个双精度的 ArrayList。

我尝试了许多使用捆绑包或直接放入包裹的变体,但是当我在新活动中读取 HashMap 时,我不断收到“解组时出现 ClassNotFoundException:nl.bioinf.thema12.labpal.objects.Measurements”。

我将如何正确实施包裹/包裹?

实验班:

测量类

接收包的活动代码

发送捆绑包的活动代码