之前项目需要,找过这方面知识。所以今天也总结一下。大家都知道activity跳转用intent,Android的当前页面跳转到新的页面。当然跳转的同时常常要携带数据或者对象。那我下面就说说跳转带对象吧。还有在例子当中,新的activity返回时,也有对象一起返回。下面看代码,只要入门Android了都看得懂,我就不再写很多注释了。

demo源码例子下载地址:点击此处下载

有两种对象类型可以传递,一是Parcelable,推荐用这个。二是Serializable。当然你在class建立对象时,都要对这两个进行接口。看代码。

package com.example.intentdemo;import android.os.Parcel;import android.os.Parcelable;public class User implements Parcelable{private String name;private String sex;private int eage;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getEage() {return eage;}public void setEage(int eage) {this.eage = eage;}public static final Parcelable.Creator<User> CREATOR = new Creator<User>() {public User createFromParcel(Parcel source) {User user = new User();user.name = source.readString();user.sex = source.readString();user.eage = source.readInt();return user;}public User[] newArray(int size) {return new User[size];}};@Overridepublic int describeContents() {return 0;}@Overridepublic void writeToParcel(Parcel parcel, int arg1) {     parcel.writeString(name);       parcel.writeString(sex);       parcel.writeInt(eage);  }}

package com.example.intentdemo;import java.io.Serializable;public class Student implements Serializable {private String name;private String sex;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getEage() {return eage;}public void setEage(int eage) {this.eage = eage;}private int eage;}

MainActivity.class

package com.example.intentdemo;import java.util.ArrayList;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity implements OnClickListener {private ArrayList<User> mArrayListUsers = new ArrayList<User>();private ArrayList<Student> mArrayListStudent = new ArrayList<Student>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);InitUI();}private void InitUI() {Button Parcelable = (Button) findViewById(R.id.button1);Button Serializable = (Button) findViewById(R.id.button2);if (Parcelable != null) {Parcelable.setOnClickListener(this);}if (Serializable != null) {Serializable.setOnClickListener(this);}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic void onClick(View arg0) {if (arg0.getId() == R.id.button1) {setParcelable();} else if (arg0.getId() == R.id.button2) {setSerializable();}}private void setSerializable() {Student student = new Student();student.setName("Serializable");student.setSex("nv");student.setEage(25);mArrayListStudent.add(student);mArrayListStudent.add(student);Intent mIntent = new Intent(this, IntentSerializableActivity.class);Bundle mBundle = new Bundle();mBundle.putSerializable("student_key", student); // 传递一个user对象mBundle.putSerializable("student_Arry", mArrayListStudent); // 传递一个user对象列表mIntent.putExtras(mBundle);startActivityForResult(mIntent, 200); // 带返回结果的Intent,标志码是1}private void setParcelable() {User user = new User();user.setName("Parcelable");user.setSex("nan");user.setEage(25);mArrayListUsers.add(user);mArrayListUsers.add(user);Intent mIntent = new Intent(this, IntentParcelableActivity.class);Bundle mBundle = new Bundle();mBundle.putParcelable("User_key", user); // 传递一个user对象mBundle.putParcelableArrayList("User_Arry", mArrayListUsers); // 传递一个user对象列表mIntent.putExtras(mBundle);startActivityForResult(mIntent, 100); // 带返回结果的Intent,标志码是1}// 返回activity页面刷新protected void onActivityResult(int requestCode, int resultCode, Intent data) {TextView show = (TextView) findViewById(R.id.test);if (resultCode == RESULT_OK && requestCode == 100) {Bundle bundle = this.getIntent().getExtras();if (bundle != null) {mArrayListUsers = bundle.getParcelableArrayList("User_Arry");}show.setText("");show.append("IntentParcelableActivity返回的数据: " + "\n");for (int i = 0; i < mArrayListUsers.size(); i++) {User userArrayList = new User();userArrayList = mArrayListUsers.get(i);show.append("name is: " + userArrayList.getName() + "\n"+ "age is: " + userArrayList.getEage() + "\n");}} else if (resultCode == RESULT_OK && requestCode == 200) {Bundle bundle = this.getIntent().getExtras();if (bundle != null) {mArrayListStudent = (ArrayList<Student>) bundle.getSerializable("student_Arry");}show.setText("");show.append("IntentSerializableActivity返回的数据: " + "\n");for (int i = 0; i < mArrayListStudent.size(); i++) {Student studentArrayList = new Student();studentArrayList = mArrayListStudent.get(i);show.append("name is: " + studentArrayList.getName() + "\n"+ "age is: " + studentArrayList.getEage() + "\n");}}}}

接受数据新的activity

IntentParcelableActivity.class

package com.example.intentdemo;import java.util.ArrayList;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.KeyEvent;import android.view.Menu;import android.widget.TextView;public class IntentParcelableActivity extends Activity {private ArrayList<User> mArrayListUsers = new ArrayList<User>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);TextView mTextView = new TextView(this);User user = new User();Bundle bundle = this.getIntent().getExtras();if (bundle != null) {user = bundle.getParcelable("User_key");mArrayListUsers = bundle.getParcelableArrayList("User_Arry");}mTextView.append("You name is: " + user.getName() + "\n"+ "You age is: " + user.getEage() + "\n" + "\n");for (int i = 0; i < mArrayListUsers.size(); i++) {User userArrayList = new User();userArrayList = mArrayListUsers.get(i);mTextView.append("You name is: " + userArrayList.getName() + "\n"+ "You age is: " + userArrayList.getEage() + "\n");}setContentView(mTextView);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}// 返回按键调用public boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubif (keyCode == KeyEvent.KEYCODE_BACK) {Intent intent = new Intent();Bundle mBundle = new Bundle();  mBundle.putParcelableArrayList("User_Arry", mArrayListUsers);   //传递一个user对象列表    intent.putExtras(mBundle);      setResult(RESULT_OK, intent);finish();}return true;}}

IntentSerializableActivity.class

package com.example.intentdemo;import java.util.ArrayList;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.KeyEvent;import android.view.Menu;import android.widget.TextView;public class IntentSerializableActivity extends Activity {private ArrayList<Student> mArrayListStudent=new ArrayList<Student>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TextView mTextView = new TextView(this);Student student = new Student();Bundle bundle = this.getIntent().getExtras();if (bundle != null) {student = (Student) bundle.getSerializable("student_key");mArrayListStudent = (ArrayList<Student>) bundle.getSerializable("student_Arry");}mTextView.append("You name is: " + student.getName() + "\n"+ "You age is: " + student.getEage() + "\n" + "\n");for (int i = 0; i < mArrayListStudent.size(); i++) {Student studentArrayList = new Student();studentArrayList = mArrayListStudent.get(i);mTextView.append("You name is: " + studentArrayList.getName() + "\n"+ "You age is: " + studentArrayList.getEage() + "\n");}setContentView(mTextView);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}// 返回按键调用public boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {Intent intent = new Intent();Bundle mBundle = new Bundle();      mBundle.putSerializable("student_Arry", mArrayListStudent);   //传递一个user对象列表    intent.putExtras(mBundle);      setResult(RESULT_OK, intent);finish();}return true;}}

xml布局我就不贴了,需要源码可以下载。

其实看一下代码,都是能看明白。也很容易实践,用过一遍之后就好很多了。

下载地址:点击此处下载


更多相关文章

  1. android 上 webkit js 本地扩展之全局本地对象实现步骤
  2. Android通讯录字母排序城市列表展示效果
  3. Android开发之Jsoup解析webView加载数据
  4. Android Fragment内嵌Fragment页面不刷新数据问题
  5. android 测试读取LEB数据的函数
  6. android 仿课程表,时间星期展示选择列表,简单易懂
  7. Android实现淘宝商品列表切换效果
  8. android中在切换fragment时,怎样做到无需重复加载数据的方法。

随机推荐

  1. 使用组件构建Android应用程序
  2. Ubuntu 无线热点 Set Up A Wireless Hots
  3. android scrollview中嵌套expandablelist
  4. android中和c++中生产者和消费者模式
  5. android发送json并解析返回json
  6. Android(安卓)Bitmap换背景颜色
  7. Frist Android
  8. android实现好看的自定义提示框
  9. Android异步线程OkHttp Post请求Json数据
  10. android加载效果,带百分比的