web-dev-qa-db-fra.com

L'objet ne fait pas partie du schéma de ce domaine.

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;
}

}

12
Riyan Fransen

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
5
harsh_v

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

10
Mohammad Mirrajabi

Essayez ceci: Android Studio -> Construire -> Rebuild & Clean Project

3
Cuong Nguyen

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
2
Mina Samy

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!

2
Eugene Voronoy

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.

2
Bob

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.

1
Nidhin

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'

Source: https://github.com/realm/realm-Java/issues/5697

0
Fadils