如何使用intent传递类的对象?

时间:2013-05-09 12:33:54

标签: java android android-intent

如何使用object传递class的{​​{1}}?

离。

intent

如何使用MyClass mc = new MyClass(); 传递mc

4 个答案:

答案 0 :(得分:3)

您需要使用Android Parcelable

什么是地块:

  
      
  • Parcel是一种轻量级IPC(进程间通信)数据结构,您可以在其中以字节流方式展平对象。

  •   
  • Parcelable是一个Android专用界面,您可以自己实现序列化。它的创建效率要高得多   Serializable,并解决默认Java的一些问题   序列化方案。

  •   

如何使用Parcelable:

  

1.实现一个接口android.os.Parcelable,它将生成Parcelable类的对象。

     

2.Overwrite两个android.os.Parcelable接口的方法如下:

     
      
  • describeContents() - 定义你要去Parcel的对象类型。

  •   
  • writeToParcel(Parcel dest,int flags) - 此处发生实际对象序列化/展平。你需要单独包裹   对象的每个元素。

  •   
     

3.定义一个名为CREATOR的变量,类型为Parcelable.Creator

查看本教程:

  

http://prasanta-paul.blogspot.com/2010/06/android-parcelable-example.html

Parcelable vs Serialization

  
      
  • Java中的序列化远远不能太慢+以满足Android的进程间通信要求。所以团队建立了   可分解的解决方案。 Parcelable方法需要你   显式序列化你的类的成员,但最后,你   获得更快的对象序列化。

  •   
  • Serializable的问题在于它试图适当地处理太阳下的一切并使用大量的反射来制作   确定要序列化的类型。

  •   

答案 1 :(得分:2)

使用Serializable Object,并将其保存在Bundle或Intent Directly

发送对象

    Intent mIntent=new Intent();
    mIntent.putExtra("iis",new MyClass());

和你的班级

    private class MyClass implements Serializable{

}

走到另一端

MyClass mc=(MyClass) getIntent().getExtras().getSerializable("iis");

<强>更新

您也可以将数据作为Parcelable对象发送。但请记住

如果要通过意图向另一个活动发送非原始类型数据/对象,则必须为该对象序列化或实现Parcelable。首选技术是Parcelable,因为doesn't impact the performance

答案 2 :(得分:0)

一个选项可以让你的类实现Serializable接口,然后你可以使用Intent#putExtra()方法的putExtra(Serializable ..)变体在intent中传递对象实例。

Passing :
   intent.putExtra("MyClassObject", obj);  

To retrive 
getIntent().getSerializableExtra("MyClassObject");

答案 3 :(得分:0)

你的班级:

 public class myClassObject implements Serializable {

      public myClassObject(){

      }
 }

意图传递:

Intent intent = new Intent(MainActivity.this,NextActivity.class);
    intent.putExtra("question_data", qData);
    intent.putExtra("answer_string", answer);
    startActivity(intent);