2017-01-23 68 views
1

我试图在图书馆和主应用程序中使用领域,它始终抱怨主应用程序中的模型不是架构的一部分。我基本上以与Realm https://github.com/realm/realm-java/tree/master/examples/moduleExample提供的例子类似的方式实现了一切,而且我遇到了完全相同的问题。在主应用程序和库中使用领域

错误:

io.realm.exceptions.RealmException: class package.models.User is not part of the schema for this Realm. 
at io.realm.internal.RealmProxyMediator.getMissingProxyClassException(RealmProxyMediator.java:241) 
at io.realm.RealmModuleMediator.getTableName(RealmModuleMediator.java:107) 
at io.realm.RealmSchema.getTable(RealmSchema.java:296) 
at io.realm.Realm.checkHasPrimaryKey(Realm.java:1469) 
at io.realm.Realm.copyToRealmOrUpdate(Realm.java:902)  

我尝试保存的东西领域的错误就被触发 - 日志后,即在我试图保存用户的详细信息和崩溃。

在主应用我的应用程序类,我在图书馆得到这个代码

@Override 
public void onCreate() { 
    super.onCreate(); 
    this.mPrefs = getSharedPreferences(Constants.SHARED_PREFERENCES, 0); 

    instance = this; 

    // initialisations 
    Realm.init(this); 
    config = new AppConfig(mPrefs); 

    this.realm = Realm.getInstance(getRealmConfig()); 
} 

public Realm getLibraryRealm(Object module, String name){ 
    RealmConfiguration config = new RealmConfiguration.Builder() 
      .name(name) 
      .schemaVersion(1) 
      .modules(module) 
      .build(); 
    return Realm.getInstance(config); 
} 

public RealmConfiguration getRealmConfig(){ 
    return new RealmConfiguration.Builder() 
      .name(getPackageName()) 
      .schemaVersion(1) 
      .modules(new RealmModule()) 
      .build(); 
} 

然后我试图得到一个领域实例如下:

AppDataAccessor app = (AppDataAccessor) getApplication(); 
Realm realm = app.getRealm(new RealmModule(), Constants.REALM_NAME); 

值得一提的是,AppDataAccessor是一个由我的应用程序类实现的接口。

此外,主应用程序和库定义了境界模块如下:

@io.realm.annotations.RealmModule(library = true, classes = { DataSet.class, Field.class, Form.class }) 
public class RealmModule { 
} 

和主要应用:

@io.realm.annotations.RealmModule(classes = {Notification.class, User.class}) 
public class RealmModule { 
} 

任何帮助,将不胜感激,谢谢!

+0

在'getRealmConfig'中看起来像'new RealmModule()'选择库模块。你是否尝试使用完整的软件包名称? – geisshirt

回答

1

今天早上我发现了这个问题。

我为主应用程序和库定义了RealmModule。这只对图书馆是必要的。