我看不到将双布尔数组传递给另一个活动。我使用 putExtra ,当我检索它并将其投射到boolean[][]
,它指出它无法投射并崩溃。然而 Boolean[] 是有效的。
我该如何通过boolean[][]
活动之间?
如果您绝对需要一个 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];
}
};
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)