传递简单数据
传递数据
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>() {@Overridepublic User createFromParcel(Parcel in) {return new User(in);}@Overridepublic User[] newArray(int size) {return new User[size];}};@Overridepublic int describeContents() {return 0;}///序列化的时候执行数据的写入@Overridepublic 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");}}