我正在使用AndroidViewModel在登录活动中使用Android数据绑定。
在布局xml中:
<data>
<import type="android.view.View"/>
<variable
name="loginVm"
type="com.winners.viewmodel.LoginViewModel" />
</data>
并且我正在活动的onCreate方法中创建绑定,如下所示:
mLoginViewModel = ViewModelProviders.of(this).get(LoginViewModel.class);
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
mBinding.setLifecycleOwner(this);
mBinding.setLoginVm(mLoginViewModel);
我将布局xml中的数据绑定如下:
android:text="@={loginVm.username}"
这是可观察的字段:
public final ObservableField<String> username = new ObservableField<>();
或
android:text="@={loginVm.logInMsg}"
这是可观察的字段:
public final ObservableField<String> logInMsg = new ObservableField<>();
或onclick绑定:
android:onClick="@{loginVm::logIn}"
一切正常,直到我从我的应用程序打开另一个应用程序,突然数据绑定文本停止工作,并且当我从代码中更新文本时,布局不会相应更改。但onClick绑定仍然有效。打开另一个应用程序后,只有来自代码的文本绑定无法正常工作。
我在Google上搜索了很多,却没有找到这种奇怪行为的答案。 希望有人可以在这里帮助我发现我在做错什么。
答案 0 :(得分:0)
我认为您的观察者工作不正常,请检查观察者如何在数据模型中存储数据。