0

我想从 onSaveInstanceState 方法中打包一个 Bundle 来临时存储它。

@Override
        public void onSaveInstanceState(Bundle savedInstanceState) {
            savedInstanceState.putBoolean(..);
            savedInstanceState.putInt(..);
//...
           super.onSaveInstanceState(savedInstanceState);
           userInputs = savedInstanceState;
    }

我只使用 putBoolean 和 putInt。我在其他地方保存这些数据:

Parcel p1 = Parcel.obtain();
p1.writeBundle(userInputs);
byte[] b1 = p1.marshall();

并在以后重用它:

Parcel p11 = Parcel.obtain();
p11.unmarshall(b1, 0, b1.length);
p11.setDataPosition(0);

Object o = p11.readValue(Bundle.class.getClassLoader());
Bundle result2 = (Bundle) o;

我得到这个异常@p11.readValue

java.lang.RuntimeException: Parcel android.os.Parcel@41e42c70: Unmarshalling unknown type code 4292 at offset 0

我不知道,有什么问题。

4

0 回答 0