小编典典

如何在活动之间传递双精度数组(boolean [] [])?

java

我看不到有一个双布尔数组传递给另一个活动。我使用putExtra,当我检索它并将其投射到时boolean[][],它指出它无法投射并崩溃。Boolean
[]有效。

我该如何在两次boolean[][]活动之间传递a ?


阅读 187

收藏
2020-11-30

共1个答案

小编典典

如果您绝对需要boolean [] [](并且仅通过传递给Parcel.writeBooleanArray()的平面boolean
[]数组就无法做到这一点),那么执行此操作的正式方法是将其包装在Parcelable类中,然后在那儿进行编组/拆组。

我将草绘代码,尽管尚未经过测试,所以肯定会有一些问题。

public class BooleanArrayArray implements Parcelable {
    private final boolean[][] mArray;

    public BooleanArrayArray(boolean[][] array) {
        mArray = array;
    }

    private BooleanArrayArray(Parcelable in) {
        boolean[][] array;
        final int N = in.readInt();
        array = new boolean[][N];
        for (int i=0; i<N; i++) {
            array[i] = in.createBooleanArray();
        }
        mArray = array;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel out, int flags) {
        final int N = mArray.length;
        out.writeInt(N);
        for (int i=0; i<N; i++) {
            out.writeBooleanArray(mArray[i]);
        }
    }

    public static final Parcelable.Creator<BooleanArrayArray> CREATOR
            = new Parcelable.Creator<BooleanArrayArray>() {
        public BooleanArrayArraycreateFromParcel(Parcel in) {
            return new BooleanArrayArray(in);
        }

        public BooleanArrayArray[] newArray(int size) {
            return new BooleanArrayArray[size];
        }
    };
}
2020-11-30