Кажется, что моя привязка данных нарушается, когда я перехожу к настройкам устройства Android через мой фрагмент, что делается здесь:
private View.OnClickListener systemListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent locationIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(locationIntent);
}
};
Если я не включаю расположение, все работает нормальнокогда я возвращаюсь к фрагменту, и мои привязки данных сохраняются.
Однако, если я включаю Местоположение и возвращаюсь к Фрагменту, все мои привязки нарушаются.
Я могу отладить свое приложение, и моя ViewModel имеет правильное значение для моей переменной, но представление не отражает это.Если я полностью выхожу из фрагмента и возвращаюсь к нему, привязки обновляются, и они работают.Я полагаю, что это потому, что я устанавливаю свою привязку в моем onCreate
методе.
Я не переопределяю onResume (only to register a Broadcast Receiver), onStop, or onStart
, потому что я думал, что мои привязки сохранятся.
ViewModel выглядит следующим образомполе, о котором идет речь:
private ObservableBoolean isServiceEnabled = new ObservableBoolean();
public void setIsServiceEnabled(boolean isServiceEnabled) {
this.isServiceEnabled.set(isServiceEnabled);
}
public ObservableBoolean getIsServiceEnabled() { return isServiceEnabled;}
Мой фрагмент:
android:visibility="@{viewModel.isServiceEnabled ? View.VISIBLE : View.INVISIBLE}"
И код моего фрагмента, который определяет, отключено / включено расположение:
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().matches("android.location.PROVIDERS_CHANGED")) {
if (checkIfLocationServicesAreAlreadyRunning()) {
refreshLocation();
mViewModel.setIsServiceEnabled(true);
} else {
mViewModel.setIsServiceEnabled(false);
}
}
}
};