2013-07-17 2 views
0

Я очень новичок в разработке/программировании на Java/Android. Недавно я работаю над учебниками из книги и пытаюсь решить проблемы, выходящие за рамки текста. Я столкнулся с проблемами.Сохранение массива по изменению ориентации

При изменении ориентации, я хочу сохранить массив строк и булевых, используя onSaveInstanceState, и .. ну, я не знаю, как. putArray, по-видимому, доступен только для одного типа данных (putIntArray, putBooleanArray и т. Д.), И я теряю информацию о том, как я могу решить эту проблему.

Массив Я пытаюсь сохранить:

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

Есть простой вариант? Каковы мои выборы?

ответ

0

Во-первых, убедитесь, что ваш класс TrueFalse реализует Serializable.

Затем вы можете поместить массив onSaveInstanceState(), и retrive его 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); 
} 
+0

спасибо! Я попробую и научусь! – Tenderloin

0

Ваш TrueFalse класс должен реализовать интерфейс Parcelable. Как только вы это сделаете, я считаю, что вы можете использовать savedInstanceState.putExtra(String key,Parcelable[] yourArray)

Вы также можете реализовать Serializable, но из того, что я слышал, есть некоторые проблемы с производительностью.

+1

большое спасибо, я попробую это. – Tenderloin

Смежные вопросы