第一个有btn Main类
package com.lyz.news.jkxy; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { private Button mbtn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mbtn= (Button) findViewById(R.id.btn_skip); mbtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i=new Intent(MainActivity.this,M2Activity.class); //putExtra 的传递方式 // i.putExtra("data","woyaoshangheima"); // Bundle的传递方法 Bundle bundle=new Bundle(); bundle.putString("name","晴"); bundle.putInt("age",18); //two界面使用了默认的,我这么指定这个key是存在的了,会覆盖他; bundle.putString("name1","lyzaaa"); //传递一个bundle对象进来 i.putExtra("mdata",bundle); i.putExtras(bundle); startActivity(i); } }); } }传递的第二个类:
package com.lyz.news.jkxy; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; public class M2Activity extends Activity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_m2); tv= (TextView) findViewById(R.id.tv); Intent i2 = getIntent(); //putExtra的方式 // tv.setText(i2.getStringExtra("data")); //bundle的传递方式 // Bundle i2Extras = i2.getExtras(); //g("name");这里先头我添成data了第一个aty传key是name,我错了之后给的就是Null // String name = i2Extras.getString("name"); // int age = i2Extras.getInt("age"); // tv.setText(String.format("name=%s,age%d,name1=%s",name,age,i2Extras.getString("name1","leo"))); // putExtra bundle的方式 Bundle mdata = i2.getBundleExtra("mdata"); //这里我getInt手滑成String没有显示Null数据了 tv.setText(String.format("name=%s,age%d,name1=%s",mdata.getString("name"),mdata.getInt("age"),mdata.getString("name1"))); } }xml文件省略:第一个页面是button第二页面是TextView
现在来介绍值传递对象:
第一个页面:
package com.lyz.news.jkxy; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import bean.Bean; public class AtyskipBean extends Activity { private Button mbtn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_atyskip_bean); mbtn= (Button) findViewById(R.id.btn_bean); mbtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(AtyskipBean.this,AtySecond.class); //Serializable是java序列化对象的一个接口 // Parcelable 是android提供的序列化对象的接口 // 值传递对象 intent.putExtra("Bean",new Bean(18,"晴")); //忘记启动aty了 startActivity(intent); } }); } }
java Bean类:
package bean; import android.os.Parcel; import android.os.Parcelable; /** * Created by Administrator on 2015/9/23. */ //public class Bean implements Serializable{ public class Bean implements Parcelable { private String name; private int age; public Bean(int age, String name) { this.age = age; this.name = name; } 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; } @Override public int describeContents() { return 0; } /** * 系统会自动序列化执行这个方法 * 我们在这个方法写入了这两条数据 * 把数据给保存起来然后就可以传递数据了 * 比如写入数据库 * * @param dest * @param flags * @Creator 创造者 创造物 */ @Override public void writeToParcel(Parcel dest, int flags) { //这里没有使用getName 数据也一样好使; dest.writeInt(age); dest.writeString(name); // 这里的写入顺序不能变,必须和构造方法一模一样; // dest.writeInt(getAge()); // dest.writeString(getName()); } public static final Creator<Bean> CREATOR = new Creator<Bean>() { @Override//Parcel 来创建一个对象 public Bean createFromParcel(Parcel source) { //这个是 new Bean( int ,string)构造方法 return new Bean(source.readInt(),source.readString()); } @Override public Bean[] newArray(int size) { return new Bean[size]; } }; }跳到的第二界面:
package com.lyz.news.jkxy; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; import bean.Bean; public class AtySecond extends Activity { private TextView mtv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_aty_second); mtv= (TextView) findViewById(R.id.tv_second); Intent i = getIntent(); //通过SerializableExtra // Bean bean= (Bean) i.getSerializableExtra("Bean"); //两种方法 获取一下返回值,或是直接点方法 // Bean bean = (Bean) getIntent().getSerializableExtra("Bean"); //通过ParcelableExtra Bean bean=i.getParcelableExtra("Bean"); mtv.setText(String.format("user info(name=%s,age=%d)",bean.getName(),bean.getAge())); } }