Activity之间跳转并传递参数

 

传递简单数据

传递数据 

Intent i=new (this,TwoActivity.class);

i.putExtra("data","要传递的数据”);

startActivity();

获取数据 

Intent i=getIntent();

String data=i.getStringExtra("data");

传递数据 包Bundle

 传递数据

方案一:

Intent i=new (this,TwoActivity.class);

Bundle b=new Bundle();

b.putString("para1","数据1"); 

b.putInt("para2","数据2");

i.putExtras(b);

startActivity(i);

 方案二:

Intent i=new (this,TwoActivity.class);

Bundle b=new Bundle();

b.putString("para1","数据1"); 

b.putInt("para2","数据2");

i.putExtra(“paraBundle”,b);

startActivity(i);

获取数据 

方案一:

Intent i=getIntent();

Bundle data=i.getExras();

String paraValue1=data.getString("para1");

//String paraValue1=data.getString("para1","默认值");

int paraValue2=data.getInt("para2");

//int paraValue2=data.getInt("para2",0);

方案二:

Intent i=getIntent();

Bundle data=i.getBundleExra(“paraBundle”);

String paraValue1=data.getString("para1");

//String paraValue1=data.getString("para1","默认值");

int paraValue2=data.getInt("para2");

//int paraValue2=data.getInt("para2",0);

传递值对象

自定义有数据类型的对象。

import java.io.Serializable;

public class User implements Serializable {

    private String name;
    private int 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;
    }

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

传递数据: 

Intent i=new Intent(this,TwoActivity.class);

i.putExtra("data",new User("名字",年龄));

startActivity(i);

获取数据:

Intent i=getIntent();

User user=(User)i.getSerializableExtra("user"); 

String s=String.format("User info(name=%s,age=%d"),user.getName(),user.getAge());
import android.os.Parcel;
import android.os.Parcelable;

public class User implements Parcelable {

    private String name;
    private int 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;
    }

    protected User(Parcel in) {
        name = in.readString();
        age = in.readInt();
    }

    public static final Creator<User> CREATOR = new Creator<User>() {
        @Override
        public User createFromParcel(Parcel in) {
            return new User(in);
        }

        @Override
        public User[] newArray(int size) {
            return new User[size];
        }
    };

    @Override
    public int describeContents() {
        return 0;
    }

    ///序列化的时候执行数据的写入
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(name);
        dest.writeInt(age);
    }
}

获取数据: 

Intent i=getIntent();

User user=(User)i.getParcelableExtra("user"); 

String s=String.format("User info(name=%s,age=%d"),user.getName(),user.getAge());

获取 Activity 的返回参数 

Intent i=new Intent(this,TwoActivity.class);

i.putExtra("data",new User("名字",年龄));

///传递的数据+请求码
startActivityForResult(i,0);

返回数据 

Intent i=new Intent();

i.putExtra("data","返回的数据");

//返回的数据+结果码
setResult(1,i);

finish();


 

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if(requestCode==0&&resultCode==1){
            val s=data!!.getStringExtra("data");
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

️ 邪神

你自己看着办,你喜欢打赏我就赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值