对象不是此Realm的架构的一部分

时间:2016-06-17 17:38:14

标签: java android realm

当我尝试从Realm数据库中获取对象时,应用程序崩溃了,我收到此错误:

java.lang.RuntimeException: Unable to start activity 
      ComponentInfo{com.repdev.realtimedelijn/com.repdev.realtimedelijn.activity.MainActivity}: 
    java.lang.IllegalArgumentException: Haltes is not part of the schema for this Realm

这是我的活动是否发生

   @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Fabric.with(this, new Crashlytics());
    setContentView(R.layout.activity_main);
    Context context = this;
    View view = this.getWindow().getDecorView();

    realm = Realm.getInstance(getRealmConfiguration());
    RealmResults<Haltes> haltes = realm
            .where(Haltes.class)
            .findAll();
    HaltesRecyclerViewAdapter haltesRecyclerViewAdapter =
            new HaltesRecyclerViewAdapter(this, haltes, true, true);
    RealmRecyclerView realmRecyclerView =
            (RealmRecyclerView) findViewById(R.id.realm_recycler_view);
    realmRecyclerView.setAdapter(haltesRecyclerViewAdapter);
}

这是模型

有人知道如何修复它吗?     公共类Haltes实现了RealmModel {

@PrimaryKey
private long id;

private String halteNaam;
private String halteNummer;

public long getId() {

    return id;
}

public void setId(long id) {

    this.id = id;
}

public String getHalteNaam() {

    return halteNaam;
}

public void setHalteNaam(String halteNaam) {

    this.halteNaam = halteNaam;
}

public  String getHalteNummer() {

    return halteNummer;
}

public void setHalteNummer(String halteNummer) {

    this.halteNummer = halteNummer;
}

}

9 个答案:

答案 0 :(得分:11)

retrolambda android-apt 一起使用时遇到了同样的问题。 在应用级build.gradle文件中更改插件的顺序对我有用:

apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'
apply plugin: 'me.tatarka.retrolambda'
apply plugin: 'realm-android'

Github问题:https://github.com/realm/realm-java/issues/3783#issuecomment-260578984

答案 1 :(得分:7)

我的问题通过在所有其他插件之后声明apply plugin: 'realm-android'来解决。

  

App level Gradle

apply plugin: 'android-apt'
apply plugin: 'realm-android'

android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion

答案 2 :(得分:3)

试试这个:Android Studio - &gt;构建 - &gt;重建&amp;清洁项目

答案 3 :(得分:3)

就我而言,我需要将kotlin-kapt粘贴到app.gradle

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt' <<<<<<<<<<the 1st row<<<<<<<<<
apply plugin: 'realm-android' <<<<<the second row<<<<<

我花了6个小时来解决这个问题。现在就可以了。 以及上面的写法-realm-android应该添加到所有插件的末尾!

答案 4 :(得分:2)

您使用的是@RealmClass注释吗? 如果您使用的是注释,请确保在Android工作室设置中启用了注释处理。

答案 5 :(得分:2)

我认为这与在添加了一些模型后添加新的Realm Model类有关。尝试卸载应用程序并再次运行或迁移您的架构。

你的Haltes类是否扩展了RealmObject?

像这样:

public class Haltes extends RealmObject

@RealmClass
public class Haltes implements RealmModel

答案 6 :(得分:2)

您尚未将Realm添加到build.gradle文件中:https://bitbucket.org/repdev/realtimedelijnandroid/src/77c531768dc1250b4d5b5c6c7fd4e6100764177d/build.gradle?at=master&fileviewer=file-view-default

请点击此处:https://realm.io/docs/java/latest/#installation

您的顶级build.gradle文件应该有此

buildscript {
  repositories {
    jcenter()
  }
  dependencies {
    classpath "io.realm:realm-gradle-plugin:1.0.1"
  }
}

您的应用级别build.gradle文件应位于顶部:

apply plugin: 'realm-android'

答案 7 :(得分:1)

在我的app项目中使用库项目时,我遇到了这个异常,而realm插件仅应用于库项目。 当我添加了realm插件`apply plugin:&#39; realm-android&#39;对于app项目,异常消失了。

确保将realm插件添加到使用领域的每个gradle项目中。

答案 8 :(得分:0)

对于那些在代码库中混合使用Kotlin的人来说,可以通过在kotlin-kapt之前应用realm-android来解决此问题。

也就是说:

apply plugin: 'kotlin-kapt' apply plugin: 'realm-android'

来源: https://github.com/realm/realm-java/issues/5697