Я пытаюсь сохранить и восстановить иерархию представления, состоящую из таблицы кнопок.Количество строк и кнопок таблицы, требуемых в таблице, неизвестно до времени выполнения и программно добавляется в раздутый макет xml в моем методе Activity
* onCreate(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)
нет.