I want to pass a realm object from one activity to another. e.g.
Intent intent = new Intent(MainActivity.this, Second.class);
intent.putExtra("Student", studentObj); // studentObj is a realm object
startActivity(intent);
And receive it from the Second activity
Intent i = getIntent();
student = (Student) i.getSerializableExtra("Student");
but this causes a null pointer exception.
java.lang.RuntimeException: Unable to start activity ComponentInfo{testapp.com.tms/tms.testapp.com.tms.view.SecondActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'io.realm.internal.LinkView io.realm.internal.Row.getLinkList(long)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2693)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2760)
at android.app.ActivityThread.access$900(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1448)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5944)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1389)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1184)
Any idea to fix this?
Your ROW object is null on which you are calling getLinkList(long).
Check whether ROW is serialized or not ? Probably it's not.
Realm currently doesn't support parsing RealmObjects across Intents natively. So you have 2 options :
Send some identifier instead and requery for the object on the other side.
Use a 3rd party library like Parceler. You can see how here: https://realm.io/docs/java/latest/#parceler
I have the some problem when I tried to pass realmobject to another activity. So, I created a DTO object based in my model, and this one implements Parcelable. Its works, but I know that isn't the better way.
See the implementation:
I have two entities, Student and Disciplines, as code below.
And Discipline class.
StudentDTO and DisciplineDTO implements Parcelable.
Finally, how i use this in my activity.
In AddDiscipline activity I get dto object.
If you want the complete source code, get in https://github.com/Turbiani/RealmForDummiesAndroid