我正在尝试通过使用Fragment将状态保存在Parcelable中。

当我希望取回保存在Parcelable中的String数组时,这将导致以下代码:

public MyObject createFromParcel(Parcel in) {
            titles=in.readStringArray(???);
}

现在readStringArray需要一个参数,即String[] ...但是为什么呢?它可以只提供我存储在其中的字符串。我不知道先验有多少,所以这很糟糕。 :(

documentation表示以下内容:

也就是说,什么都没有。

编辑:如果有人遇到同样的问题:我最终使用了writeBundle()/readBundle()并将我的String[]放入Bundle

最佳答案

这是Android 4.1.2中此方法的实现:

public final void readStringArray(String[] val) {
    int N = readInt();
    if (N == val.length) {
        for (int i=0; i<N; i++) {
            val[i] = readString();
        }
    } else {
        throw new RuntimeException("bad array lengths");
    }
}

因此它将值写入给定数组。并没有返回任何东西。

09-28 15:06