Это потерянная особенность, как в Android, иначе бы автоматически восстанавливались значения для представлений при изменении ориентации и т. Д., Но с MVVM мы должны выполнить восстановление состояния вручную.
амом начале нового проекта Android. После игры с MVP в моем последнем проекте я хочу на этот раз реализовать MVVM с привязкой данных.
У меня проблемы с пониманием DataBinding, когда дело доходит до изменений конфигурации, таких как изменение ориентации экрана.
Все образцы DataBinding (все, что я обнаружил при поиске «привязки данных android mvvm») имеют ту же проблему:Когда я ввожу что-то в EditText и поворачиваю экран, EditText после этого становится пустым.
Как только в макете появляется что-то вроде следующего, я не могу заставить представления (в данном случае EditText) восстановить их состояние после изменения поворота экрана.
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="vm"
type="com.example.app.TestViewModel" />
</data>
<EditText android:id="@+id/question"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@={vm.question}"
android:hint="Question" />
</layout>
Я предполагаю, что это происходит из-за назначения нового экземпляра модели представления в методе операций onCreate каждый раз.
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityTestBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_test);
binding.setVm(new TestViewModel());
}
Как вы справляетесь с этим правильно?
Я не могу разработать приложение с несколькими формами, которые забывают все пользовательские данные при ориентации экрана.