Android系列之Intent传递对象的两种方法
来源:互联网 发布:win10 自动优化 编辑:程序博客网 时间:2024/05/16 11:40
原文地址:http://www.apkbus.com/forum.php?mod=viewthread&tid=914&highlight=Android%E7%B3%BB%E5%88%97%E4%B9%8B
在Android中intent传递对象主要有2种方式分别是,Bundle.putSerializable(Key,Object)和Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口,以下是我为大家做的一个实例。
首先我们建立一个工程项目命名为:ObjectTestDemo。然后我们再修改main.xml布局文件,主要增加2个按钮。
Java代码:
- < ?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- < TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="Welcome to Mr Jesson's blog."
- />
- < Button
- android:id="@+id/button1"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="Serializable"
- />
- < Button
- android:id="@+id/button2"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="Parcelable"
- />
- < /LinearLayout>
Java代码:
- package eoe.test.objecttran;
- import java.io.Serializable;
- public class Person implements Serializable {
- private static final long serialVersionUID = -7060210544600464481L;
- private String name;
- private int age;
- 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;
- }
- }
- package eoe.test.tutor.objecttran;
- import android.os.Parcel;
- import android.os.Parcelable;
- public class Book implements Parcelable {
- private String bookName;
- private String author;
- private int publishTime;
- public String getBookName() {
- return bookName;
- }
- public void setBookName(String bookName) {
- this.bookName = bookName;
- }
- public String getAuthor() {
- return author;
- }
- public void setAuthor(String author) {
- this.author = author;
- }
- public int getPublishTime() {
- return publishTime;
- }
- public void setPublishTime(int publishTime) {
- this.publishTime = publishTime;
- }
- public static final Parcelable.Creator CREATOR = new Creator() {
- public Book createFromParcel(Parcel source) {
- Book mBook = new Book();
- mBook.bookName = source.readString();
- mBook.author = source.readString();
- mBook.publishTime = source.readInt();
- return mBook;
- }
- public Book[] newArray(int size) {
- return new Book[size];
- }
- };
- public int describeContents() {
- return 0;
- }
- public void writeToParcel(Parcel parcel, int flags) {
- parcel.writeString(bookName);
- parcel.writeString(author);
- parcel.writeInt(publishTime);
- }
- }
修改ObjectTranDemo.java,并且新建两个Activity,一个是ObjectTranDemo1.java,别一个是ObjectTranDemo2.java.分别用来显示Person对像数据,和Book对象数据.
Java代码:
- package eoe.test.tutor.objecttran;
- 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 ObjectTranDemo extends Activity implements OnClickListener {
- private Button sButton,pButton;
- public final static String SER_KEY = "com.tutor.objecttran.ser";
- public final static String PAR_KEY = "com.tutor.objecttran.par";
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- setupViews();
- }
- public void setupViews(){
- sButton = (Button)findViewById(R.id.button1);
- pButton = (Button)findViewById(R.id.button2);
- sButton.setOnClickListener(this);
- pButton.setOnClickListener(this);
- }
- //Serializeable传递对象的方法
- public void SerializeMethod(){
- Person mPerson = new Person();
- mPerson.setName("frankie");
- mPerson.setAge(25);
- Intent mIntent = new Intent(this,ObjectTranDemo1.class);
- Bundle mBundle = new Bundle();
- mBundle.putSerializable(SER_KEY,mPerson);
- mIntent.putExtras(mBundle);
- startActivity(mIntent);
- }
- //Pacelable传递对象方法
- public void PacelableMethod(){
- Book mBook = new Book();
- mBook.setBookName("Android Tutor");
- mBook.setAuthor("Frankie");
- mBook.setPublishTime(2010);
- Intent mIntent = new Intent(this,ObjectTranDemo2.class);
- Bundle mBundle = new Bundle();
- mBundle.putParcelable(PAR_KEY, mBook);
- mIntent.putExtras(mBundle);
- startActivity(mIntent);
- }
- //铵钮点击事件响应
- public void onClick(View v) {
- if(v == sButton){
- SerializeMethod();
- }else{
- PacelableMethod();
- }
- }
- }
Java代码:
- package com.test.tutor.objecttran;
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.TextView;
- public class ObjectTranDemo1 extends Activity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- TextView mTextView = new TextView(this);
- Person m Person= (Person)getIntent().getSerializableExtra(ObjectTranDemo.SER_KEY);
- mTextView.setText("You name is: " + mPerson.getName() + ""+
- "You age is: " + mPerson.getAge());
- setContentView(mTextView);
- }
- }
- package com.test.tutor.objecttran;
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.TextView;
- public class ObjectTranDemo2 extends Activity {
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- TextView mTextView = new TextView(this);
- Book mBook = (Book)getIntent().getParcelableExtra(ObjectTranDemo.PAR_KEY);
- mTextView.setText("Book name is: " + mBook.getBookName()+""+
- "Author is: " + mBook.getAuthor() + "" +
- "PublishTime is: " + mBook.getPublishTime()); setContentView(mTextView);
- }
- }
Java代码:
- < ?xml version="1.0" encoding="utf-8"?>
- < manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="eoe.test.tutor.objecttran"
- android:versionCode="1"
- android:versionName="1.0">
- < application android:icon="@drawable/icon" android:label="@string/app_name">
- < activity android:name=".ObjectTranDemo"
- android:label="@string/app_name">
- < intent-filter>
- < action android:name="android.intent.action.MAIN" />
- < category android:name="android.intent.category.LAUNCHER" />
- < /intent-filter>
- < /activity>
- < activity android:name=".ObjecttestDemo1">< /activity>
- < activity android:name=".ObjecttestDemo2">< /activity>
- < /application>
- < uses-sdk android:minSdkVersion="7" />
- < /manifest>
- Android系列之Intent传递对象的两种方法
- Android高手之路之Android中Intent传递对象的两种方法Serializable,Parcelable
- Android中Intent传递对象的两种方法!
- 14. Android Intent传递对象的两种方法
- android中用Intent传递对象的两种方法
- Android Intent传递对象的两种方法
- intent传递对象的两种方法
- intent传递对象的两种方法
- intent传递对象的两种方法
- Intent传递对象的两种方法
- Intent 传递对象的两种方法
- Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!
- Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!
- Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!
- Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!
- Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!
- Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!
- Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!
- postgresql上Hibernate的DetachedCriteria同时添加addOrder和Projections.rowCount()运行出错。
- Android系列之Post图片和数据
- 缓存在ASP.NET应用程序中的应用
- linux 安装gtk+-2.10.0
- 歌手文件(XML)
- Android系列之Intent传递对象的两种方法
- 毕业生注意了:《报到证》的作用
- java 静态方法的重载
- Android系列之如何使用Alarm
- 安装GTK全攻略
- xeLetex中文完美支持Beamer+ctex宏包,请看示例
- 使用multifile小结
- 任正非 至新员工
- HTML5动态的生成各种图形图像