Связывание фрагментов Android - PullRequest
0 голосов
/ 27 февраля 2019

Кажется, что моя привязка данных нарушается, когда я перехожу к настройкам устройства 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);
            }
        }
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...