Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
320 of 502 menu
◀ ▶

Функция rememberSaveable

Функция rememberSaveable работает как remember, но сохраняет значение в SavedStateHandle активности или NavBackStackEntry. После поворота экрана или пересоздания активности счётчик или текст вернутся. Внутри лямбды часто вызывают mutableStateOf.

Синтаксис

var count by rememberSaveable { mutableIntStateOf(0) }

Параметры

Параметр Описание
inputs Ключи, как у remember. При смене ключа значение пересчитают и сохранят заново.
saver Объект Saver, который пишет и читает значение в Bundle. Для простых типов есть готовые реализации.
init Лямбда, создающая начальное значение, если в сохранённом состоянии его нет.

Пример

Давайте сохраним счётчик нажатий:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { var count by rememberSaveable { mutableIntStateOf(0) } Button(onClick = { count++ }) { Text(text = "abcde") } Text(text = if (count == 0) "abcde" else "12345") } } }

На экране после поворота устройства счётчик не обнулится, текст останется "12345", если нажимали кнопку.

Пример

Давайте сохраним строку между пересозданиями:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { var text by rememberSaveable { mutableStateOf("abcde") } Button(onClick = { text = "12345" }) { Text(text = "abcde") } Text(text = text) } } }

На экране выбранный текст "12345" вернётся после уничтожения активности системой.

Смотрите также

  • функция remember,
    которая не переживает пересоздание активности
  • класс SavedStateHandle,
    куда попадают сохранённые данные
  • функция mutableStateOf,
    которой создают состояние внутри лямбды
  • класс ViewModel,
    который тоже переживает поворот экрана
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить