相关疑难解决方法(0)

实现Parcelable接口时如何读/写布尔值?

我正在尝试制作一个ArrayList Parcelable自定义对象列表的活动.我开始编写一个myObjectList扩展ArrayList<myObject>和实现的类Parcelable.

某些属性MyObjectbooleanParcel没有任何方法read/writeBoolean.

处理这个问题的最佳方法是什么?

android parcelable

397
推荐指数
8
解决办法
10万
查看次数

readBooleanArray抛出RuntimeException(“坏的数组长度”)

我知道可包裹物是隐藏的秘密,但现在我不认为我需要了解它们。

这是我之前的代码:

...
parcel.writeBooleanArray(new boolean[]{booleanValue1, booleanValue2, booleanValue3});
....

boolean[] booleans = new boolean[3];
in.readBooleanArray(booleans);
...
Run Code Online (Sandbox Code Playgroud)

不知何故,它无法在除我之外的许多设备上工作,所以我无法重现它。然后我决定将其更改为:

        ...
    parcel.writeBooleanArray(new boolean[]{booleanValue1});
    parcel.writeBooleanArray(new boolean[]{booleanValue2});
    parcel.writeBooleanArray(new boolean[]{booleanValue3});
        ...

    boolean[] booleans1 = new boolean[1];
    boolean[] booleans2 = new boolean[1];
    boolean[] booleans3 = new boolean[1];
    in.readBooleanArray(booleans1);
    in.readBooleanArray(booleans2); // it crashes here
    in.readBooleanArray(booleans3);
        ....
Run Code Online (Sandbox Code Playgroud)

包裹的源代码:

public final void readBooleanArray(boolean[] val) {
    int N = readInt();
    if (N == val.length) {
        for (int i=0; i<N; i++) {
            val[i] = readInt() != 0;
        }
    } else {
        throw new …
Run Code Online (Sandbox Code Playgroud)

android boolean parcelable runtimeexception

1
推荐指数
1
解决办法
3250
查看次数

标签 统计

android ×2

parcelable ×2

boolean ×1

runtimeexception ×1