Activity之间利用Intent传值

1、Intent自己之间传递

  • 传递:传递一个String值过去。intent.putExtra("data",((EditText)findViewById(R.id.etName)).getText().toString());
  • 接收:intent.getStringExtra("data");

2、利用Buddle传递基础类型

  • 传递:  
    • bundle.putString("data", ((EditText)findViewById(R.id.etName)).getText().toString());
    • intent.putExtra("nihao", bundle);
  • 接收:
    • Bundle bundle = intent.getBundleExtra("nihao");
    • bundle.getString("data");

3、利用Serializable序列化对象进行传递(由系统完成序列化所以速度慢,不是用于手机)

  • 类只要继承自Serializable即可。
  • 传递:
    • intent.putExtra("user", new User("liyang", 20));
  • 接收:
    • User user =(User) intent.getSerializableExtra("user");

4、利用Parcelable序列化对象传递(专为移动设备而生,速度快)

  • 类的定义
public class User implements Parcelable{
    private String name;
    private int age;
    
    public String  getName(){
        return name;
    }
    public int getAge(){
        return age;
    }
    
    public User(String name,int age){
        this.name = name;
        this.age = age;
    }
    @Override
    public int describeContents() {
        // TODO Auto-generated method stub
        return 0;
    }
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(getName());
        dest.writeInt(getAge());
    }
    
    public static final Creator<User> CREATOR = new Creator<User>() {

        @Override
        public User createFromParcel(Parcel source) {
            // TODO Auto-generated method stub
            return new User(source.readString(), source.readInt());
        }

        @Override
        public User[] newArray(int size) {
            // TODO Auto-generated method stub
            return new User[size];
        }
        
    };
}
  • 传递:intent.putExtra("user", new User("liyang", 20));
  • 接收:User user =(User) intent.getParcelableExtra("user");

 

posted @ 2015-05-12 16:41  何人之名  阅读(1305)  评论(0)    收藏  举报