从一个活动传递对象时的java问题
我正在进行一个项目,在该项目中,我必须将对象从一个活动传递到另一个活动,但我面临以下错误:
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.****.****.model.Contract)
FirstActivity
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Toast.makeText(ContractActivity.this,"POsition : "+ arg2,Toast.LENGTH_SHORT).show();
if (mSeparatorsSet.contains(arg2))
return;
Contract history = contractsListOrg.get(arg2);
Intent intent = new Intent(ContractActivity.this, ContractDetailActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("contract", history);
intent.putExtras(bundle);
startActivity(intent);
}
模态类
public class Contract implements Serializable {
private int is_cancelled;
private String status;
public int getIs_cancelled() {
return is_cancelled;
}
public void setIs_cancelled(int is_cancelled) {
this.is_cancelled = is_cancelled;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
第二项活动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.contract_detail);
simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
changeActionBarLookAndFeel();
initialization();
if (getIntent().hasExtra("contract")) {
history = (Contract) getIntent().getSerializableExtra("contract");
setValues(history);
}
}
我已经在谷歌上搜索了大多数答案,它们告诉我在modal类上实现Serializable
,我已经实现了。有人告诉我这里怎么了吗?或者有什么解决办法吗
# 1 楼答案
我建议您改为实现Parcelable,它在Android操作系统上运行得更快。 您可以为此使用自动生成。 只需在Android Studio中添加Parcelable插件即可
然后,在方法中生成将可用选项Parcelable
# 2 楼答案
根据您希望传递给另一个类的内容,您可以使用Intent或Bundle,甚至使用接口
Intent和Bundle适用于将变量或对象从一个活动传递到另一个活动
如果你想在非活动类中获取一个变量,等等。。。你最好使用界面
在这种情况下,您将获得输入/输出异常,这意味着您的输入变量无法访问您的类,我没有看到您的一些方法以及它们正在执行的操作,但我认为您应该检查
if
条件,或者检查以便更快地在上一行调用您的方法