无法检索更新的布尔数据或在领域数据库中正确更新它

时间:2018-05-25 13:45:29

标签: java android realm

我正在使用realm数据库来保存数据。虽然我已经成功保存了String和int数据,但问题是boolean。我使用一个复选框,并试图保存一个项目是否被检查的状态,但我不能这样做,即使我的方式与我对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;
}

感谢。

0 个答案:

没有答案