Android Intent间传递数据
来源:互联网 发布:什么抢购软件好 编辑:程序博客网 时间:2024/05/28 09:31
Intent常见传值方式有如下几类:
1.分类
1.传递基本数据类型(String,int,short,boolean等)
2.传递Object(比如Student对象)--其中Object对象实现了Parcelable接口
3.传递Object(比如Teacher对象)--其中Object对象实现了Serializable接口
4.传递List<Object>(Object 为基本数据类型String,int)
5.传递List<Object>(Object 为一个对象,比如Student)
2.代码
1.实现了Parceable接口的Student.java
package demo.xzy.qh.com.intentpassdatademo.bean;import android.os.Parcel;import android.os.Parcelable;/** * Function: * Created by xuzhuyun on 2017/6/13. */public class Student implements Parcelable { private int uid; private String name; public Student() { } public Student(int uid, String name) { this.uid = uid; this.name = name; } public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Student{" + "uid=" + uid + ", name='" + name + '\'' + '}'; } //以下是Parcelable接口需要实现的部分 public static final Creator<Student> CREATOR = new Creator<Student>() { @Override public Student createFromParcel(Parcel in) { return new Student(in); } @Override public Student[] newArray(int size) { return new Student[size]; } }; public static Creator<Student> getCREATOR() { return CREATOR; } @Override public int describeContents() { return 0; } //注意这里的write顺序跟下面的read顺序一定要一样 @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(uid); dest.writeString(name); } protected Student(Parcel in) { uid = in.readInt(); name = in.readString(); }}
2.实现了Serializable接口的Teacher.java
package demo.xzy.qh.com.intentpassdatademo.bean;import java.io.Serializable;/** * Function: * Created by xuzhuyun on 2017/6/13. */public class Teacher implements Serializable { private static final long serialVersionUID = 1L; private int uid; private String department; public Teacher(){} public Teacher(int uid, String department) { this.uid = uid; this.department = department; } public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getDepartment() { return department; } public void setDepartment(String department) { this.department = department; } @Override public String toString() { return "Teacher{" + "uid=" + uid + ", department='" + department + '\'' + '}'; }}
package demo.xzy.qh.com.intentpassdatademo;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;import java.util.ArrayList;import demo.xzy.qh.com.intentpassdatademo.bean.Student;import demo.xzy.qh.com.intentpassdatademo.bean.Teacher;public class MainActivity extends Activity implements View.OnClickListener { private Button mButton1, mButton2, mButton3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { findViewById(R.id.btn1).setOnClickListener(this); findViewById(R.id.btn2).setOnClickListener(this); findViewById(R.id.btn3).setOnClickListener(this); findViewById(R.id.btn4).setOnClickListener(this); findViewById(R.id.btn5).setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn1://传递基本数据类型(String,int,short,boolean等) Intent intent1 = new Intent(this, SecondActivity.class); intent1.putExtra("stringData", "hello"); intent1.putExtra("type", CommonUtils.TYPE_1); startActivity(intent1); break; case R.id.btn2://传递Object(比如Student对象)--使用Parceable passObjectByParceable(CommonUtils.TYPE_2); break; case R.id.btn3://传递Object(比如Student对象)--使用Serializable passObjectBySerializable(CommonUtils.TYPE_3); break; case R.id.btn4://传递List<Object>(Object 为基本数据类型String,int) passBasicDataTypeList(CommonUtils.TYPE_4); break; case R.id.btn5://传递List<Object>(Object 为一个对象,比如Student) passObjectDataTypeList(CommonUtils.TYPE_5); break; } } /** * 使用Parceable传递对象 */ private void passObjectByParceable(int type) { Student student = new Student(); student.setUid(1001); student.setName("arthinking"); Intent intent = new Intent(this, SecondActivity.class); Bundle bundle = new Bundle(); bundle.putParcelable("parData", student); intent.putExtras(bundle); intent.putExtra("type", type); startActivity(intent); } /** * 使用Serializable传递对象 */ private void passObjectBySerializable(int type) { Teacher teacher = new Teacher(); teacher.setUid(1001); teacher.setDepartment("A001"); Intent intent = new Intent(this, SecondActivity.class); Bundle bundle = new Bundle(); bundle.putSerializable("seriData", teacher); intent.putExtras(bundle); intent.putExtra("type", type); startActivity(intent); } /** * 传递基本数据型的ArrayList */ private void passBasicDataTypeList(int type) { //需要ArrayList ArrayList<String> list = new ArrayList<>(); list.add("aaa"); list.add("bbb"); list.add("ccc"); list.add("ddd"); Intent intent = new Intent(this, SecondActivity.class); //传递int型数组 //intent.putIntegerArrayListExtra(key, list); intent.putStringArrayListExtra("stringList", list); intent.putExtra("type", type); startActivity(intent); } /** * 传递对象类型的List * * @param type */ private void passObjectDataTypeList(int type) { //需要ArrayList ArrayList<Student> list = new ArrayList<>(); for (int i = 0; i < 2; i++) { Student student = new Student(); student.setUid(1000 + i); student.setName("arthinking" + i); list.add(student); } Intent intent = new Intent(this, SecondActivity.class); Bundle bundle = new Bundle(); bundle.putParcelableArrayList("parArrayList", list); intent.putExtras(bundle); intent.putExtra("type", type); startActivity(intent); }}
4.取值Activity
package demo.xzy.qh.com.intentpassdatademo;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;import java.util.ArrayList;import demo.xzy.qh.com.intentpassdatademo.bean.Student;import demo.xzy.qh.com.intentpassdatademo.bean.Teacher;public class SecondActivity extends Activity implements View.OnClickListener { private Button mBack; private TextView mValue; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); initView(); initData(); } private void initView() { findViewById(R.id.back).setOnClickListener(this); mValue = (TextView) findViewById(R.id.value); } private void initData() { Intent intent = getIntent(); if (intent != null) { int type = intent.getIntExtra("type", -1); switch (type) { //接收基本数据类型 case CommonUtils.TYPE_1: String StringData = intent.getStringExtra("stringData"); mValue.setText(StringData); break; //接收Parceable传递过来的对象 case CommonUtils.TYPE_2: Student student = (Student) intent.getParcelableExtra("parData"); mValue.setText(student.toString()); break; //接收Serializable传递过来的对象 case CommonUtils.TYPE_3: Teacher teacher = (Teacher) intent.getSerializableExtra("seriData"); mValue.setText(teacher.toString()); break; //接收基本类型的数组 case CommonUtils.TYPE_4: ////接收int型数组 //list =(ArrayList<Integer>) getIntent().getIntegerArrayListExtra(key); ArrayList<String> list = getIntent().getStringArrayListExtra( "stringList"); String str = ""; if (list != null && list.size() > 0) { for (String s : list) { str += s + ","; } } mValue.setText(str); break; //接收对象类型的数组 case CommonUtils.TYPE_5: Bundle bundle = intent.getExtras(); if (bundle != null) { ArrayList<Student> list2 = bundle.getParcelableArrayList("parArrayList"); String str2 = ""; if (list2 != null && list2.size() > 0) { for (Student student2 : list2) { str2 += student2.toString() + ","; } mValue.setText(str2); } } break; default: break; } } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.back: finish(); break; } }}
以上内容包含所有核心代码,基本容纳Intent的传值与取值。
完整Demo下载地址http://download.csdn.net/detail/jdfkldjlkjdl/9869241
阅读全文
1 0
- Android Intent间传递数据
- Android - Intent - 传递数据
- Android - Intent - 传递数据
- Android Intent传递数据
- android intent传递数据
- Android--Intent在活动间传递数据
- Android Intent的数据传递
- Android中Intent数据传递
- Android之Intent传递数据
- Android初试--Intent传递数据
- Android Intent传递Bundle数据
- 【Android】使用Intent传递数据
- Android Intent之间传递数据
- Android入门--Intent数据传递
- Android通过Intent传递数据
- android中Intent数据传递
- android笔记【六】---intent间的数据传递
- 【Android】Android中Intent传递简单数据
- JVM内存结构--新生代及新生代里的两个Survivor区(下一轮S0与S1交换角色,如此循环往复)、常见调优参数
- MAPKit使用
- 调试WCF服务碰到的问题
- Android实现两个ScrollView同步滚动的效果
- 2017年Android开源项目及库汇总
- Android Intent间传递数据
- 垃圾收集算法
- git
- 浅谈MySql的event
- 跳台阶(java版)
- Electron跨平台桌面应用开发工具
- 加密芯片和芯片解密那些事:如何防止电子产品抄袭
- Spring+AspectJ,操作AOP出错
- 积累go获取本地ip地址