无法将 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 传递给另一个活动的意图的主要内容,如果未能解决你的问题,请参考以下文章

使用意图将变量传递给另一个android活动

如何将收到的意图传递给另一个应用程序/活动?

使用 Retrofit 发送 POST 请求并接收 Json 响应无法使用响应数据我需要将其传递给另一个活动

如何将字节数组一个活动传递给另一个android [重复]

如何将数组传递给另一个活动?

无法通过intent将数组列表从一个活动传递到另一个活动