標籤:
Intent傳遞基本類型相信大家都十分熟悉,如何傳遞Object對象或者ArrayList<Object>對象呢?
可以通過:
(1)public Intent putExtra (String name, Serializable value)
(2)public Intent putExtra (String name, Parcelable value)
public Intent putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value)
一、通過實現Serializable介面傳遞
(1)首先讓Person繼承Serializable介面
查看文本列印
- package com.example.hellojni;
-
- import java.io.Serializable;
-
- public class Person implements Serializable{
-
- /**
- * Auto generate
- */
- private static final long serialVersionUID = -5053412967314724078L;
-
- private String name;
-
- private int age;
-
- public Person(String name, int age) {
- this.name = name;
- this.age = age;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
-
- }
查看文本列印
- package com.example.hellojni;
-
- import java.io.Serializable;
-
- public class Person implements Serializable{
-
- /**
- * Auto generate
- */
- private static final long serialVersionUID = -5053412967314724078L;
-
- private String name;
-
- private int age;
-
- public Person(String name, int age) {
- this.name = name;
- this.age = age;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
-
- }
(2)通過Intent來進行傳輸,具體方法是:public Intent putExtra (String name, Serializable value)
查看文本列印
- Intent intent = new Intent(this, OtherActivity.class);
- intent.putExtra("person", new Person("bear", 22));
- startActivity(intent);
查看文本列印
- Intent intent = new Intent(this, OtherActivity.class);
- intent.putExtra("person", new Person("bear", 22));
- startActivity(intent);
(3)另外一個Activity中列印值:
查看文本列印
- Intent intent = getIntent();
- Person person = (Person)intent.getSerializableExtra("person");
- System.out.println("name:" + person.getName());
- System.out.println("age:" + person.getAge());
查看文本列印
- Intent intent = getIntent();
- Person person = (Person)intent.getSerializableExtra("person");
- System.out.println("name:" + person.getName());
- System.out.println("age:" + person.getAge());
(4)傳遞ArrayList<Person>:
查看文本列印
- Intent intent = new Intent(this, OtherActivity.class);
- ArrayList<Person> personList= new ArrayList<Person>();
- initList(personList); //初始化personList
- intent.putExtra("personList", personList);
- startActivity(intent);
查看文本列印
- Intent intent = new Intent(this, OtherActivity.class);
- ArrayList<Person> personList= new ArrayList<Person>();
- initList(personList); //初始化personList
- intent.putExtra("personList", personList);
- startActivity(intent);
(注意傳實值型別必須是ArrayList而不能是List。調用的還是public Intent putExtra (String name, Serializable value)這個函數,另外一邊擷取的時候強制轉化為ArrayList<Person>即可)
二、通過實現Parcelable介面傳遞
同上,Person類實現Parcelable介面即可:
傳遞Object用:public Intent putExtra (String name, Parcelable value)
傳遞ArrayList<Object>用:public Intent putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value)
(同是序列化的介面,為神馬Parcelable分開提供了2個函數,而傳Serializable只提供了一個?這裡我也很不解。。。)
轉自:連結
Intent.putExtra()傳遞Object對象或者ArrayList<Object> (轉)