'RealmNoticeModelClass' tiene una clave primaria, use 'createObject (Class <E>, Object)' en su lugar

Después de actualizar el dominio de 1.1.0 a 2.0.2 . Consigo este error mientras que transporta el objeto. En la versión anterior estaba funcionando bien.

Io.realm.exceptions.RealmException: 'RealmNoticeModelClass' tiene una clave primaria, use 'createObject (Class, Object)' en su lugar.

 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.rana.sahaj.myyu, PID: 20202 io.realm.exceptions.RealmException: 'RealmNoticeModelClass' has a primary key, use 'createObject(Class<E>, Object)' instead. at io.realm.Realm.createObjectInternal(Realm.java:821) at io.realm.Realm.createObject(Realm.java:802) at com.rana.sahaj.myyu.notice.NoticeOnItemSelectedActivity$1$2.onSuccess(NoticeOnItemSelectedActivity.java:162) at com.rana.sahaj.myyu.notice.NoticeOnItemSelectedActivity$1$2.onSuccess(NoticeOnItemSelectedActivity.java:156) at com.google.android.gms.tasks.zze$1.run(Unknown Source) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5052) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609) at dalvik.system.NativeStart.main(Native Method) 

El código es

  realm.beginTransaction(); RealmNoticeModelClass realmNoticeModelClass = realm.createObject(RealmNoticeModelClass.class); realmNoticeModelClass.setDocUrl(DocUrl1); realmNoticeModelClass.setHashname(heading); realmNoticeModelClass.setContent(contentString); realmNoticeModelClass.setTime(getIntent().getExtras().getString("notice_time")); realmNoticeModelClass.setPicurl(picUrlName); realmNoticeModelClass.setUserPic(getIntent().getExtras().getString("image_user_notice")); realmNoticeModelClass.setPdfUrl(PdfUrl); realmNoticeModelClass.setPicOffline(SnapshotKey); realmNoticeModelClass.setMetaType(null); realmNoticeModelClass.setTimeStamp(SnapshotKey); realm.commitTransaction(); 

N RealmNoticeModelClass

 public class RealmNoticeModelClass extends RealmObject { @PrimaryKey private String timeStamp; private String Content; @Index private String UserPic; private String Hashname; private String picurl; private String time; private String picOffline; private String pdfUrl; private String docUrl1; private String metaType; public String getMetaType() { return metaType; } public void setMetaType(String metaType) { this.metaType = metaType; } public String getDocUrl() { return docUrl1; } ... other getters setters } 

Las claves primarias son inmutables desde Realm 2.0.0, lo que significa que no se pueden modificar después de que el objeto se haya creado.

Teniendo en cuenta que tiene una clave primaria, el objeto debe crearse con su valor de clave principal establecido.

En su caso, esta clave primaria es

 @PrimaryKey private String timeStamp; 

Esto significa que esta línea de código fallará:

 RealmNoticeModelClass realmNoticeModelClass = realm.createObject(RealmNoticeModelClass.class); realmNoticeModelClass.setTimeStamp(SnapshotKey); 

Y debería ser

 RealmNoticeModelClass realmNoticeModelClass = realm.createObject(RealmNoticeModelClass.class, SnapshotKey); 
  • ¿Cómo se comprueba si ya se ha cerrado una instancia de reino?
  • Realm: Cómo consultar con campo muchos a muchos
  • Actualización / cambio de la clave de cifrado de Realm
  • RealmResult Muchas relaciones con el adaptador
  • Realm y Comportamiento de incremento automático (Android)
  • Cómo configurar el incremento automático de clave principal en el reino de Android
  • Cambiar el nombre de la tabla Realm
  • Cómo borrar la base de datos en el reino en Android
  • Realm.io - ¿Es posible encontrar objeto por su subobjeto?
  • Reino añadiendo tamaño extra a mi apk
  • Cómo crear un nuevo RealmObject que contiene una RealmList
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.