Bundle 在活动之间失去价值

Bundle loses its values between activities

我使用以下代码启动 activity 捆绑包附加数据,我可以看到数据已保存在 Intent extras 中:

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。我已经阅读了这些问题和答案,但仍然无法弄清楚我错在哪里?

为确保Parcelable正常工作,应使用正确的方法writeToParcelcreateFromParcel,否则Android无法正确检索数据,这将导致createFromParcel returns 一个空对象。

这里这个问题,我用writeValue来包裹一个String成员,必须用writeString