web-dev-qa-db-ja.com

オブジェクトはこのレルムのスキーマの一部ではありません

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

}

14
Riyan Fransen

他のすべてのプラグインの後にapply plugin: 'realm-Android'を宣言することで、問題は解決しました。

アプリレベルのGradle

apply plugin: 'Android-apt'
apply plugin: 'realm-Android'

Android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion
12
harsh_v

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

12

私の場合、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
Eugene Voronoy

これを試してください:Android Studio-> Build-> Rebuild&Clean Project

3
Cuong Nguyen

@RealmClassアノテーションを使用していますか?アノテーションを使用している場合は、Androidスタジオの設定でアノテーション処理が有効になっていることを確認してください。

3
Bob

これは、いくつかのモデルがすでに追加された後に、新しいRealm Modelクラスを追加することに関係していると思います。アプリケーションをアンインストールしてもう一度実行するか、スキーマを移行してください。

あなたのHaltesクラスはRealmObjectを拡張していますか?

このようにしてください:

public class Haltes extends RealmObject

または

@RealmClass
public class Haltes implements RealmModel
2
Mina Samy

レルムを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'
2

アプリプロジェクトでライブラリプロジェクトを使用しているときにこの例外が発生し、レルムプラグインがライブラリプロジェクトにのみ適用されました。レルムプラグイン `apply plugin: 'realm-Android'をアプリプロジェクトに追加すると、例外がなくなりました。

レルムを使用するすべてのGradleプロジェクトにレルムプラグインが追加されていることを確認してください。

1
Nidhin

コードベースでKotlinの混合を使用している場合、この問題はkotlin-kaptの前にrealm-Androidを適用することで解決されます。

あれは:

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

ソース: https://github.com/realm/realm-Java/issues/5697

0
Fadils