Java 在意图之间传递可包裹的对象
我在传递我在事件之间创建的对象时遇到问题。我使用该网站创建代码的可包裹元素。对象类如下所示:(Item类是另一个包含字符串和双精度的简单对象,并且已被设置为可包裹) “添加食客”活动打开后,用户在食客名称EditText中输入一个字符串,该字符串用于创建新的食客对象,并在按下“确定”按钮时返回主活动Java 在意图之间传递可包裹的对象,java,android,android-intent,parcelable,Java,Android,Android Intent,Parcelable,我在传递我在事件之间创建的对象时遇到问题。我使用该网站创建代码的可包裹元素。对象类如下所示:(Item类是另一个包含字符串和双精度的简单对象,并且已被设置为可包裹) “添加食客”活动打开后,用户在食客名称EditText中输入一个字符串,该字符串用于创建新的食客对象,并在按下“确定”按钮时返回主活动 okButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View
okButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = getIntent();
Diner newDiner = new Diner(dinerNameEditText.getText().toString());
intent.putExtra("newDiner", newDiner);
setResult(RESULT_OK, intent);
finish();
}
});
最后,接收Diner对象并将其添加到主活动中的数组中:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == RESULT_OK) {
if(requestCode == SET_REQUEST) {
Diner newDiner = getIntent().getParcelableExtra("newDiner");
dinerList.add(newDiner);
}
}
}
不幸的是,当我试图保存Diner对象并将其传递给主活动时,我的代码崩溃了,有人知道这是为什么吗?使用
data
onActivityResult方法的第三个参数,而不是getIntent()
用于从使用startActivityForResult启动的活动发送的Intent获取数据:
Diner newDiner = data.getParcelableExtra("newDiner");
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == RESULT_OK) {
if(requestCode == SET_REQUEST) {
Diner newDiner = getIntent().getParcelableExtra("newDiner");
dinerList.add(newDiner);
}
}
}
Diner newDiner = data.getParcelableExtra("newDiner");