如何在Android上将对象从一个活动传递到另一个活动

新手上路,请多包涵

我正在尝试从一个 Activity 发送我的 客户 类的对象并将其显示在另一个 Activity 中。

客户类的代码:

 public class Customer {

    private String firstName, lastName, address;
    int age;

    public Customer(String fname, String lname, int age, String address) {

        firstName = fname;
        lastName = lname;
        age = age;
        address = address;
    }

    public String printValues() {

        String data = null;

        data = "First Name :" + firstName + " Last Name :" + lastName
        + " Age : " + age + " Address : " + address;

        return data;
    }
}

我想将其对象从一个 Activity 发送到另一个,然后在另一个 Activity 上显示数据。

我怎样才能做到这一点?

原文由 Adil Bhatty 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 557
2 个回答

一种选择是让您的自定义类实现 Serializable 接口,然后您可以使用 --- Intent#putExtra() 方法的 putExtra(Serializable..) 变体在意图中传递对象实例。

实际代码

在您的自定义模型/对象类中:

 public class YourClass implements Serializable {

在使用自定义模型/类的其他类:

 //To pass:
intent.putExtra("KEY_NAME", myObject);

myObject 的类型为“YourClass”。然后从另一个活动中检索,使用 getSerializableExtra 使用相同的键名获取对象。并且需要对 YourClass 进行类型转换:

 // To retrieve object in second Activity
myObject = (YourClass) getIntent().getSerializableExtra("KEY_NAME");

注意:确保您的主自定义类的每个嵌套类都实现了 Serializable 接口,以避免任何序列化异常。例如:

 class MainClass implements Serializable {

    public MainClass() {}

    public static class ChildClass implements Serializable {

        public ChildClass() {}
    }
}

原文由 Samuh 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用 Serializable 实现您的类。假设这是您的实体类:

 import java.io.Serializable;

@SuppressWarnings("serial") //With this annotation we are going to hide compiler warnings
public class Deneme implements Serializable {

    public Deneme(double id, String name) {
        this.id = id;
        this.name = name;
    }

    public double getId() {
        return id;
    }

    public void setId(double id) {
        this.id = id;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    private double id;
    private String name;
}

我们将名为 dene 的对象从 X 活动发送到 Y 活动。 X 活动中的某处;

 Deneme dene = new Deneme(4,"Mustafa");
Intent i = new Intent(this, Y.class);
i.putExtra("sampleObject", dene);
startActivity(i);

在 Y 活动中,我们正在获取对象。

 Intent i = getIntent();
Deneme dene = (Deneme)i.getSerializableExtra("sampleObject");

而已。

原文由 Mustafa Güven 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题