Не может получить обновленные логические данные или правильно обновить их в базе данных области

Я использую базу данных области для сохранения данных. Хотя мне удалось сохранить данные String и int, проблема является логической. Я использую флажок и пытаюсь сохранить состояние того, отмечен ли элемент или нет, но я не могу этого сделать, хотя делаю то же самое, что и для данных String и int. В частности, я могу временно сохранить логические данные, но не могу получить данные после закрытия приложения. Я подтвердил, что данные сохраняются сразу после того, как проверил и установил значение по умолчанию после закрытия с помощью отладчика. Кто-нибудь может сказать мне, почему это происходит?

Вот мой код для флажка

    mRealm = Realm.getDefaultInstance();
    mWordData = mRealm.where(Word.class).equalTo("id", mWordId).findFirst(); //mWordId is sent from another activity by using intent and this mWordData works properly because it doesn't return null

    public void onCheckboxClicked(View view) {
    // Is the view now checked?
    boolean checked = ((CheckBox) view).isChecked();
    // Check which checkbox was clicked
    switch (view.getId()) {
        case R.id.checkButton:
            if (checked) {
                mRealm.beginTransaction();
                mWordData.setChecked(true);
                mRealm.copyToRealmOrUpdate(mWordData);
                mRealm.commitTransaction();
            } else {
                mRealm.beginTransaction();
                mWordData.setChecked(false);
                mRealm.copyToRealmOrUpdate(mWordData);
                mRealm.commitTransaction();
            }
            break;
    }
}

  @Override
  protected void onDestroy() {
      super.onDestroy();
      mRealm.close();
  }

Вот для класса модели

@PrimaryKey
private int id;

private boolean checked;

public void setId(String sid) {
    id = Integer.parseInt(sid);
    this.id = id;
}

public int getId() {
    return id;
}

public void setChecked(boolean checked) {
    this.checked = checked;
}

public boolean isChecked() {
    return checked;
}

Спасибо.

Я не знаю, откуда взялся mWordData, и не знаю, есть ли у него первичный ключ

EpicPandaForce 26.05.2018 01:56

@EpicPandaForce Вот идентификатор

Hojun 26.05.2018 02:14

@PrimaryKey private int id; public void setId (String sid) {id = Integer.parseInt (sid); this.id = id; } public int getId () {идентификатор возврата; }

Hojun 26.05.2018 02:15

Вот mWordData

Hojun 26.05.2018 02:16

mWordData = mRealm.where (Word.class) .equalTo ("идентификатор", mWordId) .findFirst ();

Hojun 26.05.2018 02:16

хм, в таком случае это должно работать

EpicPandaForce 26.05.2018 09:17

Я только что выяснил, почему это приложение извлекает данные CSV по умолчанию, сохраненные в базе данных области при открытии, которые устанавливают все данные по умолчанию при извлечении. Спасибо.

Hojun 27.05.2018 04:50
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
7
90
0

Другие вопросы по теме