Android中Intent传递对象
2015-10-22 00:00
459 查看
摘要: Android中Intent传递对象的两种方法(Serializable,Parcelable)
直接代码不罗嗦
传递数据
接收数据
1、实现Parcelable接口
2、实现Serializable接口
直接代码不罗嗦
传递数据
public class MainActivity extends Activity { private EditText username, password; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); username = (EditText) this.findViewById(R.id.username); password = (EditText) this.findViewById(R.id.password); } //ooclick 方法 public void login(View view) { Intent intent = new Intent(this, Main2Activity.class); String name = username.getText().toString(); String pass = password.getText().toString(); // intent.putExtra("username", name); // intent.putExtra("password", pass); // Bundle 数据传递 Bundle bundle = new Bundle();// 其实是对hashmap的封装 bundle.putString("username", name); bundle.putString("password", pass); intent.putExtras(bundle); // 实现Parcel接口传递 对象 Person person = new Person(100, "张三", 26); intent.putExtra("Person", person); // 序列化传递对象 User user = new User(101, "小杨同学", 25); intent.putExtra("User", user); startActivity(intent); } }
接收数据
public class Main2Activity extends Activity { private TextView message; @Override protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity2_main); super.onCreate(savedInstanceState); message = (TextView) this.findViewById(R.id.message); String username = ""; String password = ""; Intent intent = getIntent(); // String username = intent.getStringExtra("username"); // String password = intent.getStringExtra("password"); // 获取Bundle 数据 Bundle bundle = intent.getExtras(); username = bundle.getString("username"); password = bundle.getString("password"); Person person=intent.getParcelableExtra("Person"); User user=(User) intent.getSerializableExtra("User"); message.setText( "用户名:" + username + "==密码:" + password + "\n Person对象" +person.toString() +"\n User 对象" +user.toString()); } }
1、实现Parcelable接口
public class Person implements Parcelable { private int id; private String name; private int age; @Override public int describeContents() { return 0; } /** * 把数据写入到Parcel对象 */ @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(id); dest.writeString(name); dest.writeInt(age); } public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() { // 从Parcel对象里读取数据 public Person createFromParcel(Parcel in) { return new Person(in); } public Person[] newArray(int size) { return new Person[size]; } }; /** * 读取的数据类型要和写入的数据类型相对应 * * @param in */ private Person(Parcel in) { id = in.readInt(); name = in.readString(); age = in.readInt(); } public Person(int id, String name, int age) { this.id = id; this.name = name; this.age = age; } public Person(){} public int getId() { return id; } public void setId(int id) { this.id = id; } 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; } @Override public String toString() { return "Person [id=" + id + ", name=" + name + ", age=" + age + "]"; } }
2、实现Serializable接口
public class User implements Serializable { private static final long serialVersionUID = 5232357154831253356L; private int id; private String name; private int age; public User() { super(); // TODO Auto-generated constructor stub } public User(int id, String name, int age) { super(); this.id = id; this.name = name; this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } 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; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", age=" + age + "]"; }
相关文章推荐
- Android 画圆角,半圆角,虚线实线按钮。
- android listview 使用代码滚动到指定位置(标记)
- Android中保存数据的四种方法
- Android_08_创建,启动和关闭远程服务
- 深入理解Android之Gradle
- android Animation介绍
- 【MDCC 2015】开源选型之Android三大图片缓存原理、特性对比
- Android中级篇之百度地图SDK v3.5.0-百度地图定位[超详细图解定位基础]
- android.os.networkonmainthreadexception
- Android实现AirPlay,DriodAirPlay开发
- Under the Hood: Dalvik patch for Facebook for Android
- [转]Mac OS X 下部分Android手机无法连接adb问题之解决方案
- 学习Android(3)
- Android酷炫实用的开源框架(UI框架)
- 正确使用Android性能分析工具——TraceView
- Android系统性能调优工具介绍
- Android_左右滑动切换背景
- Android程序怎样禁止横竖屏切换
- android中Fragment的构造函数
- Android中保存和恢复Fragment状态的最好方法-1