在方向更改上保存数组

时间:2013-07-17 22:28:43

标签: android arrays eclipse orientation

我是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),
};

有一个简单的选择吗?我有什么选择?

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

您的TrueFalse课程需要实施Parcelable界面。完成后,我相信您可以使用savedInstanceState.putExtra(String key,Parcelable[] yourArray)

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