当我尝试从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;
}
}
答案 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'