Dès que j'essaie d'obtenir mon objet de la base de données Realm, l'application se bloque et j'obtiens cette erreur:
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
Ceci est mon activité où il se passe
@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);
}
et voici le modèle
Quelqu'un a une idée comment résoudre ce problème? La classe publique Haltes implémente 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;
}
}
Mon problème a été résolu en déclarant apply plugin: 'realm-Android'
après tous les autres plugins.
Niveau d'application
apply plugin: 'Android-apt'
apply plugin: 'realm-Android'
Android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
avait le même problème en l'utilisant avec retrolambda et Android-apt .changer l'ordre des plugins} dans le fichier de niveau d'application build.gradle
qui a fonctionné pour moi:
apply plugin: 'com.Android.application'
apply plugin: 'com.neenbedankt.Android-apt'
apply plugin: 'me.tatarka.retrolambda'
apply plugin: 'realm-Android'
Numéro Github: https://github.com/realm/realm-Java/issues/3783#issuecomment-260578984
Essayez ceci: Android Studio -> Construire -> Rebuild & Clean Project
Je pense que cela a à voir avec l'ajout d'une nouvelle classe de modèles de domaines après que certains modèles ont déjà été ajoutés. essayez de désinstaller l’application et réexécutez ou migrez votre schéma.
Votre classe Haltes étend-elle RealmObject?
Faites comme ça:
public class Haltes extends RealmObject
ou
@RealmClass
public class Haltes implements RealmModel
Dans mon cas, il me fallait coller 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<<<<<
J'ai passé 6 heures à résoudre ce problème. Et maintenant, ça marche ... Et comment a été écrit ci-dessus - royaume-Android devrait être ajouté à la fin de tous les plugins!
Utilisez-vous l'annotation @RealmClass
? Si vous utilisez des annotations, assurez-vous que le traitement des annotations est activé dans les paramètres de votre studio Android.
J'ai eu cette exception lorsque j'utilisais un projet de bibliothèque avec mon projet d'application et que le plug-in de domaine ne s'appliquait qu'au projet de bibliothèque .
Assurez-vous que le plug-in realm est ajouté à chaque projet Gradle utilisant realm.
Pour ceux d'entre vous qui utilisent un mélange de Kotlin dans votre base de code, ce problème sera résolu en appliquant kotlin-kapt
avant realm-Android
.
C'est:
apply plugin: 'kotlin-kapt'
apply plugin: 'realm-Android'