打开其他应用后,Android数据绑定停止工作

时间:2018-08-13 06:18:01

标签: android data-binding android-databinding

我正在使用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上搜索了很多,却没有找到这种奇怪行为的答案。 希望有人可以在这里帮助我发现我在做错什么。

1 个答案:

答案 0 :(得分:0)

我认为您的观察者工作不正常,请检查观察者如何在数据模型中存储数据。