Android学习-Activity传递参数及值对象

例子:MainAct传递参数至TheAty
方法一:
MainAty传递

  i.putExtra("data","Hello jikexueyuan");

TheAty获取

private TextView tv ;
 Intent i=getIntent();
  tv= findViewById(R.id.tv);

方法二:Bundle传递
MainAty传递

 Bundle b=new Bundle();
   b.putString("name","jikexueyuan");
   b.putInt("age",2);
   i.putExtras(b);

TheAty获取

Bundle data=i.getExtras();
tv.setText(String.format("name=%s,age=%d,name1=%s",data.getString("name"),data.getInt("age"),data.getString("name1",
                "leo")));

方法二延伸:
传递:

Bundle b=new Bundle();
   b.putString("name","jikexueyuan");
   b.putInt("age",2);
    i.putExtra("data",b);

获取:

   Bundle data=i.getBundleExtra("data");

传递值对象
分别由有两种方法:Parcelable及Serializable
其中Parcelable为较复杂但是速度较快,Serializalbe简单但是相对速度慢

Parcelable方法:
MainAty:

  i.putExtra("user",new User("jikexueyuan",2));
                startActivity(i);

TheAty:

private TextView tv ;
tv= findViewById(R.id.tv);
Intent i=getIntent();
User user =i.getParcelableExtra("user");
tv.setText(String.format("User info(name=%s,age=%d)",user.getName(),user.getAge()));

User:

public class User implements Parcelable {  //parcelable接口,并且需添加两个方法,见下
    private  String name;
    private int age;
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public User(String name,int age){
        this.name=name;
        this.age=age;
    }
    @Override
    public int describeContents() {
        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) {
            return new User(source.readString(),source.readInt());
        }
        @Override
        public User[] newArray(int size) {
            return new User[size];
            }
            };//此处有分号

Serializable方法:
MainAty同上
TheAty:

private TextView tv;
tv= findViewById(R.id.tv);
        Intent i=getIntent();
User user= (User) i.getSerializableExtra("user");
tv.setText(String.format("User info(name=%s,age=%d)",user.getName(),user.getAge()));

User:

public class User implements Serializable {
getset方法
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值