Восстановление иерархии представления из сохраненного состояния не восстанавливает представления, добавленные программно
Я пытаюсь сохранить и восстановить иерархию представления, состоящую из таблицы кнопок. Количество строк и кнопок таблицы, требуемых в таблице, не известно до времени выполнения, и программно добавляются в раздутый макет XML в моемActivity
«sonCreate(Bundle)
метод. Мой вопрос: можно ли сохранить и восстановить финальную таблицу с помощью реализации сохранения / восстановления представления Android по умолчанию?
Пример моей текущей попытки приведен ниже. На начальном этапе таблица строится, как и ожидалось. Когда действие уничтожено (вращением устройства), перестроенный вид показывает только пустойTableLayout
без детей.
XML-файл, указанный вsetContentView(int)
включает в себя, среди прочего, пустойTableLayout
что кнопки добавлены в.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Setup this activity's view.
setContentView(R.layout.game_board);
TableLayout table = (TableLayout) findViewById(R.id.table);
// If this is the first time building this view, programmatically
// add table rows and buttons.
if (savedInstanceState == null) {
int gridSize = 5;
// Create the table elements and add to the table.
int uniqueId = 1;
for (int i = 0; i < gridSize; i++) {
// Create table rows.
TableRow row = new TableRow(this);
row.setId(uniqueId++);
for (int j = 0; j < gridSize; j++) {
// Create buttons.
Button button = new Button(this);
button.setId(uniqueId++);
row.addView(button);
}
// Add row to the table.
table.addView(row);
}
}
}
Насколько я понимаю, Android сохраняет состояние представлений до тех пор, пока им присваивается идентификатор, и восстанавливает представления при воссоздании действия, но сейчас, похоже, происходит повторная разметка макета XML и ничего более. При отладке кода я могу подтвердить, чтоonSaveInstanceState()
называется на каждомButton
в таблице, ноonRestoreInstanceState(Parcelable)
не является.