当前位置:  编程技术>移动开发

Android系列之Intent传递对象的几种实例方法

    来源: 互联网  发布时间:2014-10-17

    本文导语:   在Android中intent传递对象主要有2种方式分别是,Bundle.putSerializable(Key,Object)和Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口,以下是我为大家做的一个实...

 在Android中intent传递对象主要有2种方式分别是,Bundle.putSerializable(Key,Object)和Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口,以下是我为大家做的一个实例
  首先我们建立一个工程项目命名为:ObjectTestDemo
  然后我们再修改main.xml布局文件,主要增加2个按钮
view plaincopy to clipboardprint?

代码如下:

  < ?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>

   < ?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>
  [code]
接下来我们开始对工程进行实现,分别建立Person.java实现Serializable接口,另一个Book.java实现Parcelable接口

[code]
package com.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 com.test.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;

 }

 }

代码如下:

package com.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);

 }

 }

代码如下:

package com.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对象数据

代码

代码如下:

package com.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();

  }

  }

  }

代码

代码如下:

package com.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();

 }

 }

 }


代码
代码如下:

 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 mPerson = (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 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() + ""+

 "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);

 }

 }

代码如下:

 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);

   }

   }

下面是最重要的环节:修改AndroidManifest.xml文件(将两个新增的Activity,ObjecttestDemo1,ObjecttestDemo2)申明一下代码如下(第14,15行):

代码

代码如下:

< ?xml version="1.0" encoding="utf-8"?>

< manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.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>

 < ?xml version="1.0" encoding="utf-8"?>

 < manifest xmlns:android="http://schemas.android.com/apk/res/android"

 package="com.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瀑布流实例 android_waterfall
  • Android的OpenGL编程实例 Android-GL
  • android 简单图片动画播放的实例代码
  • android WakeLock使用方法代码实例
  • android自动安装apk代码实例(不使用apk安装器安装)
  • android 弹出提示框的使用(图文实例)
  • 控制Android LED灯颜色的代码实例
  • Android中AnimationDrawable使用的简单实例
  • Android中将View的内容保存为图像的简单实例
  • Android入门之LinearLayout、AbsoluteLayout的用法实例讲解
  • android中Bitmap的放大和缩小实例代码
  • android中写一个内部类来选择文件夹中指定的图片类型实例说明
  • 怎样删除android的gallery中的图片实例说明
  • 在Android中 获取正在运行的Service 实例
  • Android根据电话号码获得联系人头像实例代码
  • Android调用默认浏览器打开指定Url的方法实例
  • android双缓冲技术实例详解
  • ANDROID 完美退出APP的实例代码
  • Android对sdcard扩展卡文件操作实例详解
  • Android 清除SharedPreferences 产生的数据(实例代码)
  • Android Activity之间传递图片(Bitmap)的方法
  • Android 使用Intent传递数据的实现思路与代码
  • Android学习笔记--通过Application传递数据代码示例
  • Android 不同Activity间数据的传递 Bundle对象的应用
  • 在Android系统中使用gzip进行数据传递实例代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Android webview与js交换JSON对象数据示例
  • Android中的Looper对象详细介绍
  • Android 解析JSON对象及实例说明
  • Android天气预报之基于HttpGet对象解析天气数据的方法
  • 深入理解Android组件间通信机制对面向对象特性的影响详解
  • 深入Android 五大布局对象的应用
  • Android应用程序窗口(Activity)窗口对象(Window)创建指南
  • 申请Android Map 的API Key(v2)的最新申请方式(SHA1密钥)
  • Android系统自带样式 (android:theme)
  • Android开发需要的几点注意事项总结
  • Android网络共享软件 Android Wifi Tether
  • android 4.0 托管进程介绍及优先级和回收机制
  • Android 图标库 Android GraphView
  • Android访问与手机通讯相关类的介绍
  • 轻量级Android开发工具 Android Tools
  • Android及andriod无线网络Wifi开发的几点注意事项
  • Android 开发环境 Android Studio
  • Android 2.3 下StrictMode介绍
  • IDEA的Android开发插件 idea-android
  • Android手机事件提醒 Android Notifier
  • XBMC的Android客户端 android-xbmcremote
  • Android小游戏 Android Shapes
  • Android电池监控 Android Battery Dog
  • android开发:“android:WindowTitle”没有对应项no resource
  • Android 上类似IOS 的开关控件。 Android ToggleButton
  • Android 将 android view 的位置设为右下角的解决方法
  • Android 2D游戏引擎 Android Angle
  • Android的UI工具包 android-ui-utils


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3