2012-07-31 60 views

回答

7

您可以在另一個活動或Application類中的某個全局變量中聲明一個靜態變量,然後將其從OldActivity中的任何活動(如要解析某個NewType類型的Object)類訪問到NewActivity類。做如下操作:

在NewActivity.java中聲明一個靜態NewType對象。

public static NewObject newObject=null; 

做以下,當你調用NewActivity。

NewActivity.newObject=item; 
Intent intent=new Intent(OldActivity.this, NewActivity.class); 
startActivity(intent); 
+0

嗨,我寧願沒有活動伸手去靜態變量/應用程序對象。 – kietdlam 2012-07-31 05:09:18

+0

如果你想通過intent傳遞一些對象,那麼你可以使用Bundle,但是爲了在bundle中放置一些值,它應該是一個parcelable對象,如果它不是,那麼你必須通過其他方式來設備,以傳遞object,並且作爲Android ActivityManager,它本身調用Activity的構造函數,無法在構造函數中傳遞參數。我不認爲有任何其他的方式。 – jeet 2012-07-31 05:14:08

+0

這不是我正在尋找的答案,但它似乎是因爲框架不支持我正在尋找的行爲。謝謝! – kietdlam 2012-07-31 05:25:34

1

你可以做到這一點通過以下方式之一:

  • 使物體靜止。 (最簡單但並不總是有效)
  • 序列化 - >發送 - >接收 - >反序列化。如果你的類不可序列化,你也可以使用類似JSON decoding and encoding的東西。 (涉及到很多過度的頭,你不想使用它,除非你有一個很好的理由)
  • Parcelable(最有效,最快)

這裏有一個例如,從文檔:你可以用你的與parcelable對象,將其附加到意圖,並'接收'它在接收活動。

public class MyParcelable implements Parcelable { 
    private int mData; 

    public int describeContents() { 
     return 0; 
    } 

    public void writeToParcel(Parcel out, int flags) { 
     out.writeInt(mData); 
    } 

    public static final Parcelable.Creator<MyParcelable> CREATOR 
      = new Parcelable.Creator<MyParcelable>() { 
     public MyParcelable createFromParcel(Parcel in) { 
      return new MyParcelable(in); 
     } 

     public MyParcelable[] newArray(int size) { 
      return new MyParcelable[size]; 
     } 
    }; 

    private MyParcelable(Parcel in) { 
     mData = in.readInt(); 
    } 
} 
-1

其中一個解決方案:

你可以讓一個單獨的類來把你想

的信息。例如:

StorageManager.getInstance().saveSomething(Object obj); 

然後檢索回來了相應的getter方法

確保您處理同步問題;)

相關問題