Ориентация ориентации в учебнике «Hello, DatePicker» в Android SDK - PullRequest
0 голосов
/ 16 марта 2012

Если вы создадите приложение, описанное в этом руководстве http://developer.android.com/resources/tutorials/views/hello-datepicker.html, измените дату, а затем поверните устройство, вы заметите следующее: Дата просмотра текста приложения сбрасывается, как и ожидалось (поскольку действие уничтожено и воссоздано), но если вы затем нажмете кнопку «изменить дату», дата, установленная до поворота, будет сохранена.В документации SDK не рекомендуется использовать onConfigChanged = "Ориентация | screenSize", чтобы отследить изменение ориентации, поэтому мой вопрос: каков "лучший" способ сохранить согласованность значений по умолчанию для средства выбора даты с переменными-членами, которые используются в приложении?Мне неважно, будут ли сохранены значения переменных-членов или если средство выбора сбрасывается вместе с ними на сегодняшнюю дату, но несоответствие мне кажется неаккуратным.

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Чтобы завершить приведенный выше ответ, вы, вероятно, сделали бы что-то вроде этого, как показано здесь (переопределите два метода ниже в вашей Деятельности): https://stackoverflow.com/a/54283814/5916188

@Override protected void onSaveInstanceState (Bundle outState)
{
    super.onSaveInstanceState (outState);
    outState.putInt ("YEAR", mDatePicker.getYear ());
    outState.putInt ("MONTH", mDatePicker.getMonth ());
    outState.putInt ("DAY", mDatePicker.getDayOfMonth ());
}

@Override protected void onRestoreInstanceState (Bundle savedInstanceState)
{
    super.onRestoreInstanceState (savedInstanceState);
    mDatePicker.updateDate (savedInstanceState.getInt ("YEAR"),
                            savedInstanceState.getInt ("MONTH"),
                            savedInstanceState.getInt ("DAY"));
}
0 голосов
/ 16 марта 2012

Вы можете сохранить переменные-члены DatePickerDialog в onSaveInstanceState, а затем восстановить их в onCreate.Что-то вроде:

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

    outState.putInt("day", mDay);
    outState.putInt("month", mMonth);
    outState.putInt("year", mYear);
}
...