android 在activity之间传递复杂数据类型
2012-03-10 10:35
393 查看
在Activity传送复杂数据时,(这里用ArrayList<T>)为例,可以使用Serializable序列化或者Parcelable序列化来操作。
首先建立两个javabean,一个实现Serializable接口,一个实现Parcelable接口:
然后在MainActrivity中发送数据:
在接收的Activity中接收数据:
主页面三个按钮:
首先建立两个javabean,一个实现Serializable接口,一个实现Parcelable接口:
package org.example.passdata; import java.io.Serializable; public class Student implements Serializable { private static final long serialVersionUID = 6130446011020753806L; private String id; private String name; public Student(String id, String name) { this.id = id; this.name = name; } public String getId() { return this.id; } public void setId(String id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "id:" + this.id + " name:" + this.name; } }
package org.example.passdata; import android.os.Parcel; import android.os.Parcelable; public class Teacher implements Parcelable { private String id; private String name; public Teacher(String id, String name) { this.id = id; this.name = name; } public String getId() { return this.id; } public void setId(String id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(id); dest.writeString(name); } @Override public String toString() { return "id:" + this.id + " name:" + this.name; } public static final Parcelable.Creator<Teacher> CREATOR = new Parcelable.Creator<Teacher>() { @Override public Teacher createFromParcel(Parcel source) { Teacher teacher = new Teacher(source.readString(), source.readString()); return teacher; } @Override public Teacher[] newArray(int size) { return null; } }; }
然后在MainActrivity中发送数据:
package org.example.passdata; import java.util.ArrayList; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class PassDataActivity extends Activity implements OnClickListener { private Button normalBtn, serializableBtn, parcelBtn; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); normalBtn = (Button) findViewById(R.id.normalbtn); serializableBtn = (Button) findViewById(R.id.serializablebtn); parcelBtn = (Button) findViewById(R.id.parcelbtn); normalBtn.setOnClickListener(this); serializableBtn.setOnClickListener(this); parcelBtn.setOnClickListener(this); } @Override public void onClick(View v) { if (v.getId() == normalBtn.getId()) { // 普通传送 } else if (v.getId() == serializableBtn.getId()) { // Serializable序列化传送 ArrayList<Student> list = new ArrayList<Student>(); Student student = new Student("001", "naki"); list.add(student); Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("STUDENT_INFO", list); startActivity(intent); } else if (v.getId() == parcelBtn.getId()) { // parcel序列化传送 ArrayList<Teacher> list = new ArrayList<Teacher>(); Teacher teacher1 = new Teacher("001", "techaer1"); list.add(teacher1); Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("TEACHER_INFO", list); startActivity(intent); } } }
在接收的Activity中接收数据:
package org.example.passdata; import java.util.ArrayList; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; public class SecondActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = getIntent(); // serializable // ArrayList<Student> list = (ArrayList<Student>) intent.getSerializableExtra("STUDENT_INFO"); // TextView textView = new TextView(this); // textView.setText(list.get(0).toString()); // setContentView(textView); // parcelble ArrayList<Teacher> list = intent.getParcelableArrayListExtra("TEACHER_INFO"); TextView textView = new TextView(this); textView.setText(list.get(0).toString()); setContentView(textView); } }
主页面三个按钮:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/normalbtn" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="普通传送" /> <Button android:id="@+id/serializablebtn" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="serialized传送" /> <Button android:id="@+id/parcelbtn" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="parcel传送" /> </LinearLayout>
相关文章推荐
- android: activity之间传递复杂数据类型[使用Serializable序列化或者Parcelable序列化]
- Android Activity之间传递非原始数据类型
- Android开发:使用序列化接口Parcelable、Serializable实现Activity间传递复杂数据类型参数
- Android开发:使用序列化接口Parcelable、Serializable实现Activity间传递复杂数据类型参数
- (转)android activity之间传递bean类型数据
- Android开发:使用序列化接口Parcelable、Serializable实现Activity间传递复杂数据类型参数
- android activity之间传递bean类型数据如(list<UVedioBean> )
- android bundle 在activity之间传递数据 点击一组图片放大,再次点击恢复
- android开发:activity之间如何传递bitmap数据
- [Android]通过剪切板实现Activity之间传递数据
- Android入门篇三:使用静态变量在Activity之间传递数据
- android 入门 Linearlayout 布局 初级 activity之间数据传递 xml内部定义监听
- Android activity 之间的数据传递 bundle
- android之Intent复杂数据的传递一(Object类型的数据)
- android 不同activity之间传递数据
- android的一些提示框 以及activity之间数据的传递
- Android学习备忘009——Activity之间用Intent传递数据
- [Android]Activity跳转传递任意类型的数据、Activity为SingleTask时代替StartActivityForResult的解决方案
- android 开发之activity之间传递数据
- Android如何在Activity和Service之间传递数据