有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从一个活动传递对象时的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,我已经实现了。有人告诉我这里怎么了吗?或者有什么解决办法吗


共 (2) 个答案

  1. # 1 楼答案

    我建议您改为实现Parcelable,它在Android操作系统上运行得更快。 您可以为此使用自动生成。 只需在Android Studio中添加Parcelable插件即可

    然后,在方法中生成将可用选项Parcelable

  2. # 2 楼答案

    根据您希望传递给另一个类的内容,您可以使用Intent或Bundle,甚至使用接口

    Intent和Bundle适用于将变量或对象从一个活动传递到另一个活动

    如果你想在非活动类中获取一个变量,等等。。。你最好使用界面

    在这种情况下,您将获得输入/输出异常,这意味着您的输入变量无法访问您的类,我没有看到您的一些方法以及它们正在执行的操作,但我认为您应该检查if条件,或者检查以便更快地在上一行调用您的方法