2017-07-03 2 views
0

この問題を解決するには、私はどのように結果を解決するか分からない結果を検索しました。原因:java.lang.IllegalArgumentException:ディスク上のレルムが指定されたレルムより新しいです。v3とv0の比較

私は私がレルムを初期化した放送受信機のクラスでデータ

@Override 
    public void onReceive(Context context, Intent intent) { 

     Realm.init(context); 
     realm = Realm.getDefaultInstance(); 
} 

を受信する放送受信機を使用しています。この問題は `realm = Realm.getDefaultInstance();という行で発生しています。これを解決する方法を教えてください。

アプリケーションのOnCreate関数()メソッドでは、レルムinitializaionは、私がactivity.Pleaseでレルムを初期化した

 protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_dash_board); 
     Realm.init(this); 
//  RealmConfiguration config = new RealmConfiguration.Builder() 
//    .deleteRealmIfMigrationNeeded() 
//    .build(); 
     RealmConfiguration config = new RealmConfiguration.Builder() 
       .schemaVersion(3) // Must be bumped when the schema changes 
       .migration(new Migration()) // Migration to run 
       .build(); 

     Realm.setDefaultConfiguration(config); 
//  Realm.deleteRealm(config); 
     realm.getDefaultInstance(); 

は、この問題を解決する方法を私を助けています。

答えて

2

変更

@Override 
public void onReceive(Context context, Intent intent) { 

    Realm.init(context); 
    realm = Realm.getDefaultInstance(); 

。それはpublic static final int(定数)です

そして

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_dash_board); 
    Realm.init(this); 
    RealmConfiguration config = new RealmConfiguration.Builder() 
      .schemaVersion(SCHEMA_VERSION) // Must be bumped when the schema changes 
      .migration(new Migration()) // Migration to run 
      .build(); 

移動SCHEMA_VERSIONプロパティのどこか。

2

これは、ブロードキャスト受信機がトリガーされたときにRealm.setDefaultInstance(config)が設定されていないために発生しています。

アクティビティのデフォルト設定を設定しているようです。代わりにApplication.onCreate()で行う必要があります。あなたの放送受信機における

@Override 
public void onReceive(Context context, Intent intent) { 

    Realm.init(context); 
    RealmConfiguration config = new RealmConfiguration.Builder() 
      .schemaVersion(SCHEMA_VERSION) // Must be bumped when the schema changes 
      .migration(new Migration()) // Migration to run 
      .build(); 
    realm = Realm.getInstance(config); 

public class MyApplication extends Application { 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     Realm.init(this); 
     RealmConfiguration config = new RealmConfiguration.Builder() 
       .schemaVersion(3) // Must be bumped when the schema changes 
       .migration(new Migration()) // Migration to run 
       .build(); 
     Realm.setDefaultConfiguration(config); 
    } 
} 

// Remember to set `name` in Manifest as well 
<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="io.realm.examples.intro" > 
    <application android:name=".MyApplication"> 
     <!-- Activities --> 
    </application> 
</manifest> 
+0

私のアプリケーションを拡張する別のアクティビティを作成する必要があります –

+0

答えに "MyApplication"と "Application"が混乱しています –

+0

'Realm.init()'のデフォルト設定を打つ再び:P – EpicPandaForce

関連する問題