Я использую фрагмент и пытаюсь обновить вид после перехода обратно к фрагменту из намерения.Этот фрагмент запускает намерение и является возвращаемым представлением из этого намерения:
FragmentA -> Intent -> FragmentA
Мое связывание работает, если я никогда не запускаю это намерение.Однако после запуска этого намерения мои привязки не сохраняются динамически, только когда я возвращаюсь к приложению.
Я использую LocationServices
, а когда вызываются методы onProviderEnabled or onProviderDiabled
, я устанавливаюзначение свойства из моей ViewModel.Опять же, это прекрасно работает, если Intent не запускается.Однако, когда я возвращаюсь к фрагменту из намерения, и службы либо отключены, либо включены, представление не будет обновляться.Когда я отлаживаю, значения верны, но они не отражаются в моем фрагменте.
Я провел много исследований по этому вопросу и не могу понять.Мне кажется, что я делаю все правильно, чтобы реализовать ObservableFields
.
В моей ViewModel:
private ObservableField<String> statusMessage = new ObservableField<>();
public ObservableField<String> getStatusMessage() {return statusMessage;}
И в моем View, привязка установлена как:
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")
И в xml моего просмотра: android:text='@{viewModel.statusMessage}
Я не понимаю, почему моя привязка не сохраняется.Это из-за запускаемых сервисов?Я не создаю новую ViewModel, он не появляется, потому что экземпляр ViewModel создается в onCreate
, и единственный момент срабатывания точки останова - при первом запуске.
Я не переопределяюonResume
или что-нибудь подобное в данный момент.