2011-11-21 53 views
0

在標準C#,我可以重載默認的構造函數的東西,如一個活動的默認構造函數是否可以用monodroid重載?

public class foo 
{ 
    data bar; 
    public foo(data bar) 
    { 
    this.bar = bar; 
    } 
} 

有沒有一種方法可以讓我在MonoDroid的做到這一點?我試圖在一個activity中重載一個默認的構造函數(只是爲了讓它變得有趣!)。

回答

0

您不在Android中的活動中實現構造函數。在撥打super.onCreate()之後,請在onCreate()中進行這種初始化。

(我道歉的Java語法 - 我不說話C#)

2

你能提供一個Activity構造函數需要參數?是。它會有所幫助嗎?不,因爲活動是通過Context.StartActivity()啓動的,它不提供調用非默認構造函數的機制。

在「活動」之間傳輸數據的「Android方式」是使用Intent「extras」機制,例如, Intent.PutExtra(string,string)Intent.GetStringExtra(string),它引入了它自己的問題:

  1. 意圖也是一個IPC機制(作爲活動實際上可能駐留在另一個進程 - 這是由設計),所以你只限於類型的可以跨進程邊界進行封送。
  2. String s,int s和其他內建類型是支持的,但並不完全是「高級」對象。
  3. 通過android.os.Parcelable接口支持「更高級別」對象,但(a)具有「按值編組」的語義,因此對於在活動之間共享讀取+寫入數據無用,以及(b)Mono for Android doesn't currently support implementing this interface

那麼你如何在活動之間分享數據?通過踢球。

  • 將數據放到Application子類中。這將通過Context.ApplicationContext屬性訪問,並且可以存儲進程全局狀態。
  • 在您的流程中使用其他一些public static字段來包含共享信息。
  • 提供ContentProvider實現,當存在提示時將存儲並提供所需的數據。
  • Sqlite?
+0

謝謝 - 這很有用。是否有任何代碼示例可用於這些方法。我想讓我正在傳遞的類是可序列化的,並通過了PutExtra調用,但似乎沒有可序列化的重載.... – Nodoid

相關問題