Sobes.tech
Junior — Middle

Welke methoden bestaan er om de gebruikersinterface te behouden bij het wijzigen van de oriëntatie of configuratie van het apparaat?

sobes.tech AI

Antwoord van AI

При изменении ориентации или конфигурации устройства в Android активность по умолчанию пересоздаётся, что приводит к потере состояния пользовательского интерфейса. Для сохранения UI существуют следующие методы:

  1. onSaveInstanceState(Bundle outState) и onRestoreInstanceState(Bundle savedInstanceState) — позволяют сохранить и восстановить состояние UI, например, содержимое полей ввода.

  2. ViewModel — хранит данные, связанные с UI, и переживает изменения конфигурации, позволяя не терять состояние.

  3. Retain Fragment — фрагмент с setRetainInstance(true) сохраняется при пересоздании активности.

  4. Использование ресурсов с разметкой для разных конфигураций — например, разные layout-файлы для портретной и ландшафтной ориентации.

  5. Обработка конфигурационных изменений вручную через 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);
}