我发送了一个自定义类的对象,它实现了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
答案 0 :(得分:1)
我想它应该像这样 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();
}
}
答案 1 :(得分:1)
您可以使用bundle
传递数据
Bundle bundle = new Bundle();
bundle.putSerializable("MyObject", myObject);
intent.putExtras(bundle);
使用
检索Intent intent = getIntent();
Bundle bundle = intent.getExtras();
myObject = (MyObject)bundle.getSerializable("MyObject");
答案 2 :(得分:0)
我认为你的MyObject不是真正的Serializable。要序列化一个类,您需要两个条件:
我怀疑ParseFile是可序列化的,所以这不起作用
答案 3 :(得分:0)
这是我用来在Activity:
之间传递Object类的代码public class ClassName extends Activity{
static ClassName2 abc_obj;
public ClassName(ClassName2 a_b_c){
abc_obj = a_b_c;
}
@Override
public void onCreate(Bundle savedInstanceState) {
// here you can access everything of class ClassName2
}
}
//现在这里是将Abc类传递给ClassName的代码:
ClassName2 objAbc = new ClassName2(); //update ClassName2 according to you
ClassName x_y_z = new ClassName(objAbc);
Intent intent = new Intent(this, x_y_z.getClass());
startActivity(intent);
希望它会对你有所帮助。快乐的编码:)
答案 4 :(得分:0)
public class MyObject extends ParseObject implements Serializable {
如果ParseObject
是你的班级吗?如果是,请尝试制作serializable
。
还要检查某些android对象是否serializable
忽略那些使用transient
。
也使用intent.putSerializable("MyObject", myObject);
和intent.gettSerializable("MyObject");