2016-11-25 3 views
0

Я использую ниже код (краткое описание)не в состоянии получить JSON переходила в намерении другой деятельности

В Глобальном классе с именем, как 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.

Любая помощь приветствуется. Заранее спасибо.

+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

. Я также использовал, получив Bundle from Intent, а затем получаю строку из полученного пакета, но это возвращает null. Тем не менее, если я использую строку как «MY_KEY», чтобы поставить и получить обработанный json, она работает нормально, но не работает, если я использую константу String, такую ​​как статический окончательный String key = «MY_KEY» или статический ключ String = «MY_KEY». –

0

Пожалуйста, укажите нулевое возвращаемое значение намерения.

поэтому используйте Bundle

Bundle статистов = intent.getExtras(); mPojo = новый Gson(). FromJson (extras.getString (Utilities.KEY), ViewPojo.class);

+0

Какая разница в этом случае, идея также такая же, как получение разобранного json из пакета, которое было передано в намерение. –