Android-View无法动态刷新

时间:2019-03-05 21:03:31

标签: java android android-fragments mvvm

我正在使用一个Fragment,我试图从一个Intent导航回Fragment后更新View。该片段启动了Intent,并且是该Intent的返回视图:

FragmentA -> Intent -> FragmentA

如果我从不启动此Intent,则绑定有效。但是,一旦启动此Intent,我的绑定就不会动态持久化,只有当我导航回该应用程序时。

我正在使用LocationServices,并且在调用onProviderEnabled or onProviderDiabled方法时,我正在通过ViewModel设置属性的值。同样,如果Intent无法启动,则此方法也很好。但是,当我从“意图”返回到“片段”并且服务被禁用或启用时,视图将不会更新。当我调试时,这些值是正确的,但是它们并没有反映在我的片段中。

我对此进行了大量研究,无法弄清楚。我觉得我在做正确的事情来实现ObservableFields

在我的ViewModel中:

private ObservableField<String> statusMessage = new ObservableField<>();
public ObservableField<String> getStatusMessage() {return statusMessage;}

在我的视图中,绑定设置为:

onCreateView(Shortened for brevity..)
    binding = DataBindingUtil.inflate(inflater, R.layout.my_fragment, container, false);
    binding.setLifecycleOwner(this);
    View root = binding.getRoot();
    binding.setViewModel(myViewModel);

我的基本意图:

private View.OnClickListener gpsService = v -> {
    Intent myIntent= new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
    startActivity(myIntent);
};

对于onProviderEnabled,我正在设置变量myViewModel.getStautsMessage().set("Enabled")

在我的View的xml中:  android:text='@{viewModel.statusMessage}

我不明白为什么我的绑定没有被保留。是因为服务启动了吗?我没有创建新的ViewModel,它没有出现,因为ViewModel是在onCreate中实例化的,并且唯一触发断点的时间是在首次启动时。

目前我还没有覆盖onResume或类似的东西。

0 个答案:

没有答案