2016-11-25 37 views
0

我使用下面的代碼(簡述)沒能獲得JSON傳入意圖另一個活動

在全球類命名爲公用事業 公共靜態最終字符串鍵=「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的情況下也一樣。

任何幫助表示讚賞。提前致謝。

+0

爲什麼JSON可以簡單地使用可序列化來傳遞POJO對象 –

回答

0

而不是從意圖得到stringExtra你應該從意圖獲得額外的和形式得到字符串。

//MyActivity 
Bundle extras = this.getIntent().getExtras(); 
pojoJson = extras.getString(Utilities.KEY);  
mPojo = new Gson().fromJson(pojoJson, ViewPojo.class); 

你也可以使用一個Parcelable實現直接通過意圖發送的對象而不是將其解析爲JSON的,看到https://developer.android.com/reference/android/os/Parcelable.html更多信息

+0

我也使用從Intent獲取Bundle,然後從檢索到的Bundle中獲取字符串,但返回null。但是,如果我使用字符串作爲「MY_KEY」來放置和獲得解析的JSON其工作正常,但不工作,如果我使用String常量像靜態最終字符串鍵=「MY_KEY」或靜態字符串鍵=「MY_KEY」。 –

0

請指定null值的回報的意圖。

所以使用束

捆綁額外= intent.getExtras(); mPojo = new Gson()。fromJson(extras.getString(Utilities.KEY),ViewPojo.class);

+0

在這種情況下會有什麼區別,想法也是一樣的,就像從傳入意圖的包中獲取解析的json一樣。 –

相關問題