当前位置: 代码迷 >> 综合 >> Activity 之间传递参数
  详细解决方案

Activity 之间传递参数

热度:48   发布时间:2024-01-29 15:25:41.0

 

传递简单数据

传递数据 

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");}}

 

  相关解决方案