Activity页面跳转传值
第一种方法:(Intent)
发送方:
Intent intent = new Intent(); intent.putExtra("name", "诸葛亮"); intent.putExtra("age", 50); intent.putExtra("IQ", 200.0f); intent.setClass(MainActivity.this, SecondActivity.class); MainActivity.this.startActivity(intent);
接受方:
Intent intent = getIntent(); String name = intent.getStringExtra("name"); int age = intent.getIntExtra("age", 0); float IQ = intent.getFloatExtra("IQ", 0.0f); textview2.setText("name:"+name+",age:"+age+",IQ:"+IQ);
第二种方法:(Bundle)
发送方:
Intent intent = new Intent(); Bundle bundle = new Bundle(); bundle.putString("name", "乔峰"); bundle.putInt("age", 40); bundle.putFloat("weight", 70.4f); intent.putExtras(bundle); intent.setClass(MainActivity.this, SecondActivity.class); startActivity(intent);
接受方:
Intent intent = getIntent(); Bundle bundle = intent.getExtras(); String name = bundle.getString("name"); int age = bundle.getInt("age"); float weight = bundle.getFloat("weight"); textview.setText(name+","+age+","+weight);
第三种方法:(Application)
首先要新建一个继承Application的MyApp类,补充属性的get/set方法
AndroidManifest.xml也要配置application的属性android:name=".MyApp"
发送方:
MyApp myApp = (MyApp) getApplication(); myApp.setName("周星驰"); Intent intent = new Intent(); intent.setClass(MainActivity.this, SecondActivity.class); startActivity(intent);
接受方:
MyApp myApp = (MyApp) getApplication(); String name = myApp.getName(); textview = (TextView) findViewById(R.id.textview); textview.setText(name);
第四种方法:(推荐)
对象类要实现Parclelable接口
发送方:
Intent intent = new Intent(); Person person = new Person("孙悟空",500,55.6f); intent.putExtra("person", person); intent.setClass(MainActivity.this, SecondActivity.class); startActivity(intent);
接受方:
Intent intent = getIntent(); Person person = intent.getParcelableExtra("person"); textview = (TextView) findViewById(R.id.textview); textview.setText(person.toString());
对象类:
public class Person implements Parcelable { private String name; private int age; private float weight; public Person() { super(); // TODO Auto-generated constructor stub } public Person(String name, int age, float weight) { super(); this.name = name; this.age = age; this.weight = weight; } 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 float getWeight() { return weight; } public void setWeight(float weight) { this.weight = weight; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", weight=" + weight + "]"; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeInt(age); dest.writeFloat(weight); } public static final Parcelable.CreatorCREATOR = new Parcelable.Creator () { public Person createFromParcel(Parcel in) { return new Person(in); } public Person[] newArray(int size) { return new Person[size]; } }; private Person(Parcel in) { name = in.readString(); age = in.readInt(); weight = in.readFloat(); } }