Какие методы существуют для сохранения пользовательского интерфейса при изменении ориентации или конфигурации устройства?
Ответ от нейросети
sobes.tech AI
При изменении ориентации или конфигурации устройства в Android активность по умолчанию пересоздаётся, что приводит к потере состояния пользовательского интерфейса. Для сохранения UI существуют следующие методы:
-
onSaveInstanceState(Bundle outState) и onRestoreInstanceState(Bundle savedInstanceState) — позволяют сохранить и восстановить состояние UI, например, содержимое полей ввода.
-
ViewModel — хранит данные, связанные с UI, и переживает изменения конфигурации, позволяя не терять состояние.
-
Retain Fragment — фрагмент с
setRetainInstance(true)сохраняется при пересоздании активности. -
Использование ресурсов с разметкой для разных конфигураций — например, разные layout-файлы для портретной и ландшафтной ориентации.
-
Обработка конфигурационных изменений вручную через
android:configChangesв манифесте, чтобы предотвратить пересоздание активности (не рекомендуется для сложных UI).
Пример сохранения состояния поля ввода:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("input_text", editText.getText().toString());
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
String text = savedInstanceState.getString("input_text");
editText.setText(text);
}