我现在开始一个新的安卓项目。在上一个项目中尝试过MVP架构后,这一次我想使用MVVM和Data Binding。但是,在配置更改(如屏幕方向)时,我无法正确理解DataBinding。
所有关于DataBinding和MVVM的示例都有同样的问题:当我在EditText中输入内容并旋转屏幕后,EditText会变为空白。 只要我的布局中有以下类似代码,我就不能保持视图(例如EditText)在屏幕旋转后恢复其状态。
我猜这是因为在活动的onCreate方法中每次分配一个新的视图模型实例。
所有关于DataBinding和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());
}
你如何正确地处理这个问题?
我无法开发一个具有多个表单的应用程序,因为在屏幕方向变化时会忘记所有用户输入。