Android Intent中如何传递对象,就我目前所知道的有两种方法:
一种是Bundle.putSerializable(Key,Object);
另一种是Bundle.putParcelable(Key, Object);
当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口,为了让大家更容易理解我还是照常写了一个简单的Demo,大家就一步一步跟我来吧!
第一步:新建一个Android工程命名为ObjectTranDemo(类比较多哦)目录结构如下图:
第二步:修改main.xml布局文件(这里我增加了两个按钮)代码如下:
<?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 wei'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>
第三步:新建两个类一个是Person.java实现Serializable接口,另一个Book.java实现Parcelable接口,代码分别如下:
Person.java:
package com.tutor.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; } }
Book.java:
package com.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<book> CREATOR = new Creator<book>() { 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对象数据,代码分别如下:
ObjectTranDemo.java:
package com.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<a title="传递对象" href="http://www.android-study.com/jichuzhishi/191.html">传递对象</a>的方法 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<a title="传递对象" href="http://www.android-study.com/jichuzhishi/191.html">传递对象</a>方法 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(); } } }
ObjectTranDemo1.java:
package com.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 mPerson = (Person) getIntent().getSerializableExtra( ObjectTranDemo.SER_KEY); mTextView.setText("You name is: " + mPerson.getName() + "/n" + "You age is: " + mPerson.getAge()); setContentView(mTextView); } }
ObjectTranDemo2.java:
package com.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() + "/n" + "Author is: " + mBook.getAuthor() + "/n" + "PublishTime is: " + mBook.getPublishTime()); setContentView(mTextView); } }
第五步:比较重要的一步啦,修改AndroidManifest.xml文件(将两个新增的Activity,ObjectTranDemo1,ObjectTranDemo2)申明一下代码如下(第14,15行):
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.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=".ObjectTranDemo1"></activity> <activity android:name=".ObjectTranDemo2"></activity> </application> <uses-sdk android:minSdkVersion="7" /> </manifest>
OK!!!!1
相关推荐
下面将详细介绍这两种方法。 ### 1. `Serializable`接口 #### (1) 实现过程 首先,你需要让你的自定义对象实现`Serializable`接口。例如: ```java public class MyObject implements Serializable { //... } `...
"Android Intent传递对象"这个主题主要关注如何利用Intent来传递自定义对象,以便在应用程序的不同部分共享数据。下面我们将深入探讨这个话题。 首先,了解Intent的基本结构和类型至关重要。Intent有两种类型:显式...
本话题将详细探讨如何通过Intent传递对象以及对象数组。 一、Intent的基础 Intent主要由两部分构成:Action(动作)和Data(数据)。Action定义了Intent要执行的操作,如ACTION_VIEW、ACTION_SEND等;Data则包含了...
在实际开发中,如果需要频繁地通过Intent传递对象,推荐使用`Parcelable`接口,以提高应用性能。然而,对于简单的数据模型或者不需要考虑性能的情况下,`Serializable`接口是一个更简单的选择。 总结起来,Android...
当我们需要在Intent中传递复杂对象时,有两种主要的方法:Serializable和Parcelable。这两种方式都可以实现对象的序列化,但它们在性能和效率上存在差异。 **Serializable接口** Serializable接口是Java提供的一个...
Android开发中有时需要在应用中或进程间传递对象,下面详细介绍Intent使用Bundle传递对象的方法。 被传递的对象需要先实现序列化,而序列化对象有两种方式:java.io.Serializable和android.os.Parcelable Java中...
总结,Android的Intent机制为开发者提供了一种灵活且高效的方式来在Activity之间传递数据,无论是基本类型、字符串还是复杂的自定义对象。同时,利用setResult()和onActivityResult()可以轻松处理Activity间的返回与...
Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable...
Android Intent传递对象的两种方法(Serializable,Parcelable)详细介绍 今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle....
本资源重点介绍了两种在Android中传递对象的方法:Parcelable接口和Serializable接口。这两种方式都允许你在Intent中传递复杂对象,但它们各自有其特点和适用场景。 一、Parcelable接口 Parcelable是Android系统...
本篇文章将深入探讨如何通过Intent传递对象,以及涉及到的序列化方式——Serializable和Parcelable。 首先,Intent主要分为显式Intent和隐式Intent。显式Intent明确指定要启动的目标组件,而隐式Intent则通过ACTION...
本文将深入探讨如何在Xamarin.Android中通过Intent传递自定义对象,特别关注实现`IParcelable`接口的方法。 首先,让我们理解Intent的基本概念。Intent是用来表示应用程序的意图,它可以携带数据并指定目标组件。在...
本DEMO主要讲解如何通过Intent传递对象和数组,这些都是Android开发中的基础知识,对于理解应用程序间的数据通信至关重要。 一、Intent的基本使用 Intent对象是用来表示一个操作的意图,它可以携带少量的数据。在...
在Android中,我们可以通过Intent的putExtra()方法,将实现了Serializable接口的对象以键值对的形式放入Intent,然后在接收方通过getSerializableExtra()取出。由于Serializable接口的实现相对简单,只需要在类上...
本文实例分析了Android编程使用Intent传递对象的方法。分享给大家供大家参考,具体如下: 之前的文章中,介绍过Intent的用法,比如启动活动,发送广播,启发服务等,并且可以...在Android中,使用Intent传递对象有两种
本文将详细讲解如何在Android中通过Intent传递对象,主要分为序列化方式和Parcelable接口方式。 首先,理解Intent的基本概念。Intent主要用于启动一个Activity或Service,或者在它们之间传递消息。Intent携带的数据...
本篇文章将详细介绍如何在Android中使用Intent传递图片。 首先,我们要理解Android Intent的基本概念。Intent是一种消息对象,它用来表示一个操作的意图,比如启动一个新的Activity或服务。Intent包含两个主要部分...