簡體   English   中英

如何使用意圖傳遞類的對象?

[英]How to pass an object of a class using an intent?

如何使用intent傳遞classobject

例如

MyClass mc = new MyClass();

如何使用intent傳遞mc

您需要使用Android Parcelable

什么是包裹:

  • 包裹是一種輕量級的IPC(進程間通信)數據結構,您可以在其中以字節流形式展平對象。

  • Parcelable是Android專用的界面,您可以在其中自行實現序列化。 它的創建要比Serializable效率高得多,並且可以解決默認Java序列化方案中的一些問題。

如何使用Parcelable:

1.實現一個接口android.os.Parcelable,該對象將成為Parcelable類的對象。

2.將下面的android.os.Parcelable接口的兩種方法覆蓋如下:

  • describeContents()-定義要打包的對象的類型。

  • writeToParcel(Parcel dest,int flags)-實際的對象序列化/展平在這里進行。 您需要單獨包裹對象的每個元素。

3.定義一個名為CREATOR的Parcelable.Creator類型的變量

查看本教程:

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

可打包與序列化

  • Java的序列化太慢了,太慢了,無法滿足Android的進程間通信要求。 因此,團隊構建了Parcelable解決方案。 Parcelable方法要求您顯式地序列化類的成員,但是最后,您可以更快地序列化對象。

  • Serializable的問題在於,它試圖適當地處理陽光下的所有事物,並使用大量反射來確定要序列化的類型。

使用可序列化的對象,並將其直接保留在Bundle或Intent中

發送對象

    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

一種選擇是讓您的類實現Serializable接口,然后可以使用Intent#putExtra()方法的putExtra(Serializable ..)變體在意圖中額外傳遞對象實例。

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

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

你的班:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM