Восстановление иерархии представления из сохраненного состояния не восстанавливает представления, добавленные программно

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

Ответы на вопрос(3)

Ваш ответ на вопрос