getParcelable возвращает значение null, даже если переданный объект не является значением null

Я хочу передать объект, подлежащий передаче, другому действию. Поэтому я реализовал разделяемый класс для достижения этой цели. И я закодировал:

Intent intent = new Intent(mainactivity.this, SecondActivity.class);
Object[] object = new Object();
intent.putExtra("Object ", object);
startActivity(intent);

и во втором действии я закодировал:

Object[] object = (Object[]) getIntent().getExtras().getParcelable("object");

Когда я передаю объект Intent, он не равен нулю. В то время как, когда я получаю его во втором Activity, он равен нулю. У Вас есть какие-то предложения? Заранее спасибо!


person FrankBr    schedule 31.08.2012    source источник


Ответы (2)


Измените это:

Object object = (Object) getIntent().getExtras().getParcelable("object");

К этому:

Object object = getIntent().getExtras().get("Object");

getParcelable следует использовать только в том случае, если вы используете putParcelable или вставляете объект Parcelable с помощью putExtra в отправляющую часть кода.

P.S. также обратите внимание на разницу в имени ключа Object и object

person waqaslam    schedule 31.08.2012
comment
Вы исправили разницу O в ключе? - person waqaslam; 31.08.2012
comment
Я заметил, что вы обновили свой вопрос, используя массив. Вы не можете играть с массивами простыми словами. Попробуйте внедрить Parcelable в свой объект, а затем поместите в пакет packageableArray. - person waqaslam; 31.08.2012
comment
Я починил это. Я отметил, что проблема заключается в литье. Я получаю объект, который можно разделить, но невозможно передать его в мой объект массива. Я работаю над этим сейчас. - person FrankBr; 31.08.2012
comment
Я только что проанализировал каждый элемент массива Parcelable в массиве Object, и все работает как надо. - person FrankBr; 31.08.2012

Вы можете просто использовать в вызывающем абоненте:

Intent i = new Intent(EditActivity.this, ViewActivity.class);
i.putExtra("myObj", p);
startActivity(i);

В приемнике:

Bundle b = i.getExtras();
Person p = (Person) b.getParcelable("myObject");

Надеюсь, это поможет вам

person FrancescoAzzola    schedule 31.08.2012
comment
Я видел где-то похожее на ваш ответ, что i.putExtra("return-data", p); и в приемнике b.getParcelable("data"); и он работает. Как это возможно, когда два ключа не совпадают? Мне интересно об этом. - person Kaidul; 24.05.2013