android – 在Activities之间传递参数 – null

我正在发送一个实现Serializable的自定义类的对象:

public class MyObject extends ParseObject implements Serializable {
private static final long serialVersionUID = 1L;
public MyObject() {
}
public String getTitle() {
    return getString("title");
}
public void setTitle(String title) {
    put("title", title);
}
public ParseFile getParseFile() {
    return getParseFile("file");
}
public void setParseFile(ParseFile file) {
    put("file", file);
}
}

该类包含atm一个字符串和一个ParseFile.

我正在尝试将一个对象从一个Activity传递给另一个Activity.

private void editMyObject(MyObject myObject) {
    Intent intent = new Intent(AActivity.this, BActivity.class);
    intent.putExtra("MyObject", myObject);  
    Toast.makeText(getApplicationContext(), "OUT: "+myObject.getTitle(), Toast.LENGTH_SHORT).show(); // here i get the content, proper string
    startActivity(intent);
}

在“接收者”活动中:

protected void onCreate(Bundle savedInstanceState) {
    ...

    Intent intent = getIntent();
    myObject = (MyObject)intent.getSerializableExtra("MyObject");
    if (myObject != null) {
        editText.setText(myObject.getTitle());
    }
    Toast.makeText(getApplicationContext(), "IN: "+myObject.getTitle(), Toast.LENGTH_SHORT).show(); // here is null
}

我究竟做错了什么..?我跟着另一个关于SOF的问题,但这没有帮助;)
顺便说一句:不,ParseFile是Parse developers级的

最佳答案 我猜它应该像这样的ParsObject实现Serializable,因为根据关于Serializable的主题,如果Super类不可序列化,那么实例的状态不会被维护.因此,尝试使ParseObject类Serializable并查看结果

尝试像这样的东西

public class MyObject implements Serializable {

private ParseObject parseObject;

public MyObject() {
    parseObject = new ParseObject();
}

public String getTitle() {
    return parseObject.getString("title");
}

public void setTitle(String title) {
    parseObject.put("title", title);
}

public ParseFile getParseFile() {
    return parseObject.getParseFile("file");
}

public void setParseFile(ParseFile file) {
    parseObject.put("file", file);
}

private void writeObject(java.io.ObjectOutputStream stream)
        throws IOException {
    stream.writeObject(parseObject);
}

private void readObject(java.io.ObjectInputStream stream)
        throws IOException, ClassNotFoundException {
    parseObject = (ParseObject) stream.readObject();
}
}
点赞