我的Android应用正在使用BaseViewModel
,我有两个ObservableDouble()
和一个ObservableBoolean
。 ObservableBoolean
绑定到EditText enable property.
。第一个ObservableDouble
是我正在测试的字段。如果此字段的值为整数,则应禁用其他ObservableDouble
(using ObservableBoolean field
)。
直到我进入设备的系统设置并使用手机上的“后退”按钮返回到Fragment
为止,绑定过程一直有效。
这是我的ViewModel的设置方式:
private ObservableDouble myValueA = new ObservableDouble();
private ObservableDouble myValueB = new ObservableDouble();
private ObservableBoolean isEnabled = new ObservableBoolean();
每个字段都有getter/setter
,但这是我的验证检查的地方:
public OservableDouble getMyValueB() {
if (!isWholeNumber(getMyValueA().get()) {
isEnabled.set(false);
} else {
isEnabled.set(true);
}
}
在我的视图中,用于与myValueB
关联的TextView:
android:enabled="@{viewModel.valueIsEnabled}"
在我看来,
我正在使用以下代码进入设备的设置:
Intent servicesIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
stateActivity(servicesIntent);
当我启动此Intent时,这似乎是束缚我的地方。
我的onCreate
方法中的VieModel被实例化,而我的onCreateView
方法中的绑定被设置为
FragmentTest binding = DataBindingUtil.inflate(inflater, R.layout.my_fragment, container, false);
binding.setViewModel(myViewModelVariable);
是的,绑定工作正常,但是如果我确实启动Intent进入设备设置,则当我通过“后退”按钮返回到“片段”时,绑定会中断。但是,如果我通过其他路径重新打开Fragment,绑定将返回,并且所做的任何更改现在都将反映在视图中。
我在整个过程中放置了几个断点,并且在ViewModel中值正确,但是View无法正确显示。