我如何知道为Parcel.readStringArray()创建数组有多大?

i_a*_*orf 4 android parcel

当我这样做时,我得到一个空指针异常:

    private String[] foo;

    private void readFromParcel(Parcel in) {
        in.readStringArray(foo);
    }
Run Code Online (Sandbox Code Playgroud)

我似乎需要先分配数组.但我怎么知道它有多大?我是否必须首先编写尺寸然后先读取尺寸?并不是有一个writeStringArray()方法来处理这个问题吗?

来自Android文档:

有许多方法用于读取和写入原始对象的原始数组,这通常导致写入4字节长度,然后是原始数据项.

所以,如果我自己编写计数,它会被写两次.必须有一些方法可以做到这一点,我不负责管理这个.

MBy*_*ByD 5

我知道这不是一个直接的答案,但您可以使用list(ArrayList<String>)代替writeList()createStringArrayList().

或者您可以使用Parcle#createStringArray()来获取阵列.