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 object that receives passed data coming up null
- Bundle loses values between activities
为确保Parcelable
正常工作,应使用正确的方法writeToParcel
和createFromParcel
,否则Android无法正确检索数据,这将导致createFromParcel
returns 一个空对象。
这里这个问题,我用writeValue
来包裹一个String成员,必须用writeString
。
我使用以下代码启动 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 object that receives passed data coming up null
- Bundle loses values between activities
为确保Parcelable
正常工作,应使用正确的方法writeToParcel
和createFromParcel
,否则Android无法正确检索数据,这将导致createFromParcel
returns 一个空对象。
这里这个问题,我用writeValue
来包裹一个String成员,必须用writeString
。