Это потерянная особенность, как в 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());
}

Как вы справляетесь с этим правильно?

Я не могу разработать приложение с несколькими формами, которые забывают все пользовательские данные при ориентации экрана.

Ответы на вопрос(3)

Ваш ответ на вопрос