我使用以下代码来启动捆绑附加数据的活动,我可以看到数据已保存在Intent附加内容中:
public static Intent newIntent(Context packageContext, AccountItem account, TransactionItem transaction) {
Bundle args = new Bundle();
args.putParcelable("arg_key_account", account);
args.putParcelable("arg_key_transaction", transaction);
args.putInt("test_key", 18);
Intent intent = new Intent(packageContext, TransactionConnectActivity.class);
intent.putExtra("arg_key", args);
intent.putExtra("test_key", 21);
return intent;
}
但是,当我尝试从intent获取bundle extras数据时,bundle没有数据:
protected void onCreate(@Nullable Bundle savedInstanceState) {
...
Intent intent = getIntent();
if (intent != null) {
int test = intent.getIntExtra("test_key", -1);
Bundle args = intent.getExtras().getBundle("arg_key");
}
...
}
自定义对象具有实现Parcelable
,并且所有成员都已写入parcel。我已经阅读了这些问题和答案,但仍然无法弄清楚我错在哪里?
答案 0 :(得分:1)
要确保Parcelable
有效,请使用正确的方法writeToParcel
和createFromParcel
,否则Android无法正确检索数据,这会导致createFromParcel
返回空对象。< / p>
至于这个问题,我使用writeValue
来包裹一个String成员,该成员必须使用writeString
。