Android - 将对象传递给另一个活动

时间:2014-04-11 05:01:22

标签: java android object

我正在使用跟随类,我将其作为对象: http://pastebin.com/rKmtbDgF

我正试图通过以下方式传递它:

Intent booklist = new Intent(getBaseContext(), BookList.class);

Bundle bundle = new Bundle();
bundle.putParcelable("imageManager", (Parcelable) im);                
booklist.putExtras(bundle);
booklist.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(booklist);

我正试图通过以下方式接收它:

ImageManager im  = (ImageManager) getIntent().getExtras().getParcelable("imageManager");

我收到以下错误:

java.lang.ClassCastException: com.example.example.ImageManager

3 个答案:

答案 0 :(得分:0)

尝试以下帖子。

How can I make my custom objects Parcelable?

问题是ImageManager不是可比对象。所以这给出了施法错误。 如果imageManager是你的,你应该让类实现Pracabale,就像sais上面的url一样。

编辑:

以上应该是做Parceables的正确方法, 但在你的情况下,我真的会说你不应该在不同的活动之间传递ImageManager。因为您在ImageManager类中使用的上下文将被处理..并且您肯定会收到错误。

那你为什么不改编该类的新实例而只将Bitmap传递给它(在将该位图与其他非上下文相关的信息转移到该过程之后)。

答案 1 :(得分:0)

go here,并粘贴您的类结构。它将为您创建parcelable类,然后您可以轻松地围绕活动传递您的对象。

答案 2 :(得分:0)

最简单的方法是实现Serializable ..

import java.io.Serializable;

@SuppressWarnings("serial") 
public class Student implements Serializable {

public Student(int age, String name){
    this.age = age;
    this.name = name;
}

public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}
public String getName() {
    return this.name;
}
public void setName(String name) {
    this.name = name;
}

private int age;
private String name;

}

将对象从活动A发送到活动B

Student student = new Student (18,"Zar E Ahmer");
Intent i = new Intent(this, B.class);
i.putExtra("studentObject", student);
startActivity(i);

在活动B中获取对象。

Intent i = getIntent();
Student student = (Student)i.getSerializableExtra("studentObject");