`

在Activity中传递对象(使用Parcelable方式)

 
阅读更多
参考文章
Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]
http://blog.csdn.net/cjjky/article/details/6441104

数据类型有限,比如遇到不可序列化的数据Bitmap,InputStream, 或者LinkList链表等等数据类型就不太好用。


要传递的对象

package com.andy.entity;  
  
package com.andy.entity;  
  
import android.os.Parcel;  
import android.os.Parcelable;  
  
public class Police implements Parcelable {  
      
    private String name;  
    private int workTime;  
  
    public String getName() {  
        return name;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
  
    public int getWorkTime() {  
        return workTime;  
    }  
  
    public void setWorkTime(int workTime) {  
        this.workTime = workTime;  
    }  
      
    public static final Parcelable.Creator<Police> CREATOR = new Creator<Police>() {  
  
        @Override  
        public Police createFromParcel(Parcel source) {  
            Police police = new Police();  
            police.name = source.readString();  
            police.workTime = source.readInt();  
            return police;  
        }  
  
        @Override  
        public Police[] newArray(int size) {  
            return new Police[size];  
        }  
    };  
  
    @Override  
    public int describeContents() {  
        return 0;  
    }  
  
    @Override  
    public void writeToParcel(Parcel parcel, int flags) {  
        parcel.writeString(name);  
        parcel.writeInt(workTime);  
    }  
}  
      
   /** 
     * Pacelable传递对象方法  
     */  
    private void PacelableMethod(){  
        Police mPolice = new Police();     
        mPolice.setName("I am Police");        
        mPolice.setWorkTime(2008);     
        Intent mIntent = new Intent(this,ParcelableDemo.class);     
        Bundle mBundle = new Bundle();     
        mBundle.putParcelable(PAR_KEY, mPolice);     
        mIntent.putExtras(mBundle);     
       
        startActivity(mIntent);     
    }  
}  



接受对象的Activity
package com.andy.testdemo;  
  
import com.andy.entity.Police;  
  
import android.app.Activity;  
import android.os.Bundle;  
import android.widget.TextView;  
  
public class ParcelableDemo extends Activity {  
  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
          
        TextView mTextView = new TextView(this);     
        Police mPolice = (Police)getIntent().getParcelableExtra(TestActivity.PAR_KEY);     
        mTextView.setText("Police name is: " + mPolice.getName()+"/n"+     
                          "WorkTime is: " + mPolice.getWorkTime() + "/n");     
        setContentView(mTextView);     
    }  
  
}    
分享到:
评论

相关推荐

    Inetent传递对象parcelable

    本文将详细介绍如何使用Parcelable接口来实现对象在Intent中的传递。 首先,了解Parcelable接口。它是Android提供的一种高效的数据序列化方式,比默认的Serializable接口更快,更适合在内存和Intent中传输数据。要...

    实现Parcelable接口的方式借助Intent实现Android工程中Activity之间Java对象的传递.zip

    这个压缩包文件"实现Parcelable接口的方式借助Intent实现Android工程中Activity之间Java对象的传递.zip"提供了一个关于如何实现这一功能的示例。 首先,了解Intent的基本用法。Intent在Android中扮演着消息传递的...

    Activity之间对象传递的两种方式

    本篇文章将详细探讨在Android中Activity之间对象传递的两种主要方式:Parcelable和Serializable接口的使用。 首先,我们来理解为什么需要在Activity之间传递对象。在多Activity的应用中,可能需要在不同的Activity...

    Android Parcelable序列化自定义类集合在Activity间传递

    在Activity之间传递Parcelable对象时,可以使用`Intent`的`putExtra()`方法,传入自定义的键和Parcelable对象。对于集合,可以使用`putParcelableArrayListExtra()`。 5. **Activity间的数据传递**: 起始...

    Activity传递对象的3种方法(全)

    本文将详细介绍如何使用三种方法来传递对象:Parcelable、Serializable和Bundle,这些方法适用于不同类型的对象,包括基本类型、字符串、布尔值、数组、ArrayList以及自定义复杂对象如UUID和浮点类型。 ### 1. ...

    android activity之间传递对象

    本篇将详细讲解如何在Android的Activity之间传递对象,主要涉及两种常见的实现方式:Parcelable和Serializable。 一、Parcelable接口 Parcelable是Android系统提供的一种高效的数据序列化方式,它允许对象直接在...

    Activity之间传递对象的Demo

    三、使用Parcelable传递对象 在发送Activity中,我们可以这样创建Intent并添加对象: ```java User user = new User("Tom", 25); Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("user...

    使用ParcelableDemo

    此外,你还可以在Bundle中使用Parcelable对象,这对于保存和恢复Activity或Fragment的状态非常有用。在保存状态时,可以将Parcelable对象放入Bundle: ```java Bundle bundle = new Bundle(); bundle.putParcelable...

    Activity传递类对象源码

    Activity间要传递数据,很多时候简单的int和string满足不了需求,我们在面向对象中已经习惯了类和对象, 那么下面就说一下如何传递类对象。 Android中有两种办法来完成这件事。一个是Java的序列化(Serializable)...

    android 传递对象

    Android提供了多种方式来传递对象,包括Intent、Bundle、Parcelable、Serializable等。下面将详细讲解这些方法及其适用场景。 首先,Intent是Android系统用来启动Activity或Service的主要手段,同时也支持传递数据...

    Android-Activity之间数据传递的多种方式

    Intent是Android系统中用于启动组件(如Activity)的一种消息对象,同时也可以用来在组件间传递数据。Intent的数据传递有两种类型:显式和隐式。 1. 显式Intent:通过指定目标Activity的类名,可以精确地启动某个...

    Activity跳转时传递Bitmap对象

    在Activity间传递Bitmap,有两种主要方式:Intent extras和使用Parcelable接口。由于Bitmap对象较大,直接通过Intent的extras传递可能会导致内存溢出,因为Intent的大小有限制。因此,更推荐使用Parcelable接口。 1...

    两个Activity在调用StartActivity的时候传递序列化信息

    - 虽然序列化是一种方便的方法,但也可以考虑使用其他方式,如使用Parcelable接口(更高效,但更复杂),或者通过Bundle传递基本类型和简单对象。 5. **rar标签**:在这里,"rar"可能是一个误输入,因为RAR是一种...

    activity值传递

    除了直接在Intent中使用putExtra()方法外,还可以使用Bundle对象来组织和管理数据,然后将Bundle对象附加到Intent上。这在传递大量数据时尤其有用。 ```java Bundle bundle = new Bundle(); bundle.putString(...

    activity与activity利用接口相互传递数据

    为了能在Intent中传递接口对象,我们需要使用序列化。在ActivityA的类定义上添加`implements Parcelable`并实现相关方法。当然,也可以使用`Gson`或`Jackson`库将接口对象转换为字符串再传递。 在目标Activity...

    Android中使用Intent在Activity之间传递对象(使用Serializable或者Parcelable)的方法

    Android中的不同Activity之间传递对象,我们可以考虑采用Bundle.putSerializable(Key,Object);也可以考虑采用Bundle.putParcelable(Key, Object);其中前面一种方法中的Object要实现Serializable接口,后面一种方法中...

    Android Intent传递数据大小限制详解

    前言 在sendBroadcast,startActivity时,我们会用到Intent。 Intent可以携带一些数据,比如基本类型数据int、Boolean,或是String,或是序列化...在Intent中传入一个Parcelable对象;例如传入一个bitmap对象。 代

    android中Intent传递对象的两种方法(Serializable,Parcelable)

    - **性能**:Parcelable的序列化和反序列化速度远超Serializable,尤其是在传递大量数据或频繁传递对象时。 - **内存消耗**:Parcelable在内存使用上也优于Serializable,因为它不需要创建额外的代理对象。 - **复杂...

    android中传递对象

    本文将详细讲解如何在Android中通过Intent传递对象,主要分为序列化方式和Parcelable接口方式。 首先,理解Intent的基本概念。Intent主要用于启动一个Activity或Service,或者在它们之间传递消息。Intent携带的数据...

Global site tag (gtag.js) - Google Analytics