0

我对 Java/Android 开发/编程非常陌生。最近我正在写书上的教程,并试图解决文本范围之外的问题。我遇到了问题。

在方向更改时,我希望使用 保存字符串和布尔数组onSaveInstanceState,并且.. 好吧,我不知道怎么做。putArray似乎仅适用于一种类型的数据(,putIntArrayputBooleanArray),我不知道如何解决这个问题。

我要保存的数组:

    private static TrueFalse[] mQuestionBank =  new TrueFalse[]{
        new TrueFalse(R.string.question_oceans, true, false),
        new TrueFalse(R.string.question_africa, false, false),
        new TrueFalse(R.string.question_america, true, false),
        new TrueFalse(R.string.question_mideast, false, false),
        new TrueFalse(R.string.question_asia, true, false),
};

有简单的选择吗?我的选择是什么?

4

2 回答 2

0

你的TrueFalse类需要实现Parcelable接口。一旦你这样做了,我相信你可以使用savedInstanceState.putExtra(String key,Parcelable[] yourArray)

您也可以实现 Serializable,但据我所知,存在一些性能问题。

于 2013-07-17T23:19:31.967 回答
0

首先,确保你的TrueFalse类实现了Serializable.

然后您可以将数组放在 onSaveInstanceState() 上,然后在 onRestoreInstanceState() 上检索它

@Override
protected void onSaveInstanceState(Bundle outState) {
    outState.putSerializable("my_array", mQuestionBank);
    super.onSaveInstanceState(outState);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    mQuestionBank = savedInstanceState.getSerializable("my_array");
    super.onRestoreInstanceState(savedInstanceState);
}
于 2013-07-17T22:36:11.630 回答