Android Realm-使用Intent传递Realm对象 [英] Android Realm - Passing Realm object using Intent

查看:187
本文介绍了Android Realm-使用Intent传递Realm对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将领域对象从一项活动传递到另一项活动.例如

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?

推荐答案

Realm当前不支持本机跨Intent解析RealmObject.因此,您有2个选择:

Realm currently doesn't support parsing RealmObjects across Intents natively. So you have 2 options :

  1. 发送一些标识符,然后在另一侧重新查询该对象.

  1. Send some identifier instead and requery for the object on the other side.

使用第3方库,例如Parceler.您可以在此处查看操作方法: https://realm.io/docs/java/latest/#包裹

Use a 3rd party library like Parceler. You can see how here: https://realm.io/docs/java/latest/#parceler

这篇关于Android Realm-使用Intent传递Realm对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆