В моем приложении есть TextView
и EditText
. У обоих есть данные. При изменении ориентации экрана данные EditText
остаются, но TextView
данные очищаются.
Может ли кто-нибудь помочь мне найти способ сохранить данные TextView
?
В моем приложении есть TextView
и EditText
. У обоих есть данные. При изменении ориентации экрана данные EditText
остаются, но TextView
данные очищаются.
Может ли кто-нибудь помочь мне найти способ сохранить данные TextView
?
Если вы хотите заставить TextView
сохранить свое состояние, вы должны добавить freezesText
атрибут:
<TextView
...
android:freezesText="true" />
Из документации по freezesText
:
Если установлено, текстовое представление будет включать свой текущий полный текст внутри своей замороженной сосульки в дополнение к метаданным, таким как текущая позиция курсора. По умолчанию это отключено; это может быть полезно, когда содержимое текстового представления не хранится в постоянном месте, таком как поставщик содержимого
Чтобы сохранить данные об изменении ориентации, вам необходимо реализовать два метода:
источник
1) Не все представления с идентификатором сохраняют свое состояние. Виджеты Android с идентификатором, состояние которого может быть изменено пользователем, по-видимому, сохраняют свое состояние при мягком уничтожении. Итак, EditText сохраняет свое состояние, но TextView не сохраняет свое состояние при мягком уничтожении.
"AFAIK, Android заботится о сохранении состояния только для вещей, которые, как ожидается, изменится. Вот почему он сохраняет текст в EditText (который пользователь может изменить) и, возможно, не сохраняет состояние для TextView (которое обычно остается статическим ) "
Марк М
Таким образом, вы можете сохранить состояние текстового представления в onSaveInstanceState, и вы можете выбрать восстановление состояния текстового представления в onCreate.
2) Лучше всего сохранять «внутреннее» состояние экземпляра без просмотра, даже если вы объявляете
Из документов:
«Однако ваше приложение всегда должно иметь возможность завершать работу и перезапускаться с сохранением предыдущего состояния. Не только потому, что есть другие изменения конфигурации, которые вы не можете предотвратить от перезапуска вашего приложения, но и для обработки таких событий, как получение пользователем входящего телефонный звонок, а затем вернется к вашему приложению ".
JAL
источник
Android не делает за вас такие вещи. Вы сохранили все данные вручную.
Вы можете использовать в действии для сохранения значений
и используйте что-то подобное в методе oncreate действия для загрузки сохраненных объектов
вы также можете выбрать отключение изменения ориентации для занятия
источник
Измените свои действия в AndroidManifest.xml, чтобы переопределить поведение изменения ориентации, добавив это в свое действие / действия:
Это должно выглядеть примерно так:
источник
Добавьте их в AndroidManifest.xml.
Поместите название вашей деятельности вместо Activity_Name.
Это также будет работать с изменением значения TextField.
источник
просто добавь
к вашей деятельности в AndroidManifest.xml.
источник
При изменении конфигурации Android по умолчанию перезапускает вашу активность. Чтобы изменить это, вы должны переопределить
onConfigurationChanged()
метод. Кроме того, вы должны добавитьandroid:configChanges
в свой файл манифеста.Вы можете прочитать здесь .
источник
Я также использовал
и это не сработало.
Но потом я нашел решение.
Убедитесь, что у вас правильно написана следующая строка:
убедитесь, что он не читает что-то вроде
У меня на первом месте был второй способ, но когда я исправил, состояние сохранилось.
источник