无法将 json 传递给另一个活动的意图
Posted
技术标签:
【中文标题】无法将 json 传递给另一个活动的意图【英文标题】:not able to get json passed into intent to another activity 【发布时间】:2017-04-10 01:49:37 【问题描述】:我正在使用下面的代码(简要)
在名为 Utilities 的全局类中 公共静态最终字符串 KEY = "MY_KEY";
//Pojo Class
ViewPojo mPojo;
//ActivityDemo
Intent intent = new Intent(this, MyActivity.class);
intent.putExtra(Utilities.KEY, new Gson().toJson(mPojo));
//MyActivity
pojoJson = getIntent().getStringExtra(Utilities.KEY);
mPojo = new Gson().fromJson(pojoJson, ViewPojo.class);
正在返回 null,我不清楚这是如何发生的以及为什么会发生。 同样适用于 Bundle。
感谢任何帮助。提前致谢。
【问题讨论】:
为什么 JSON 你可以简单地使用可序列化传递你的 POJO 对象 【参考方案1】:而不是从意图中获取stringExtra
,您应该从意图中获取额外的内容并在那里获取字符串。
//MyActivity
Bundle extras = this.getIntent().getExtras();
pojoJson = extras.getString(Utilities.KEY);
mPojo = new Gson().fromJson(pojoJson, ViewPojo.class);
您还可以使用 Parcelable 实现直接通过 Intent 发送对象,而不是将其解析为 JSON,请参阅 https://developer.android.com/reference/android/os/Parcelable.html 了解更多信息
【讨论】:
我也使用过从 Intent 获取 Bundle,然后从检索到的 Bundle 中获取字符串,但返回的是 null。但是,如果使用字符串作为“MY_KEY”来放置和获取解析的 json,它的工作正常,但如果我使用静态最终字符串键 =“MY_KEY”或静态字符串键 =“MY_KEY”等字符串常量,则不起作用。跨度> 【参考方案2】:请指定空值返回意图。
所以使用捆绑
捆绑附加服务 = intent.getExtras(); mPojo = new Gson().fromJson(extras.getString(Utilities.KEY), ViewPojo.class);
【讨论】:
在这种情况下会有什么不同,想法也与从传递到意图的捆绑包中获取解析的 json 相同。以上是关于无法将 json 传递给另一个活动的意图的主要内容,如果未能解决你的问题,请参考以下文章