可以使用monodroid重载活动默认构造函数吗?

时间:2011-11-21 20:21:11

标签: c# android mono xamarin.android

在标准C#中,我可以用

之类的东西重载默认构造函数
public class foo
{
  data bar;
  public foo(data bar)
  {
     this.bar = bar;
  }
}

我有没有办法在monodroid中做到这一点?我正在尝试重载一个活动中的默认构造函数(只是为了让它变得有趣!)。

2 个答案:

答案 0 :(得分:2)

你能提供一个带参数的Activity构造函数吗?是。它会有用吗?不,因为活动是通过Context.StartActivity()启动的,它不提供调用非默认构造函数的机制。

" Android Way"在Activities之间传输数据就是使用Intent" extras"机制,例如Intent.PutExtra(string,string)Intent.GetStringExtra(string),它引入了自己的一系列问题:

  1. 意图也是一种IPC机制(因为一个活动实际上可能存在于另一个进程中 - 这是设计的),所以你被限制在可以跨进程边界封送的类型中。
  2. 支持
  3. String s,int和其他内置类型,但并不完全"高级"对象。
  4. "更高等级"通过android.os.Parcelable接口支持对象,但(a)有一个"按值排序"语义,因此对于在活动之间共享读写数据非常有用,并且(b)Mono for Android doesn't currently support implementing this interface
  5. 那么如何在活动之间共享数据?通过撑船。

    • 将数据放在Application子类上。这可以通过Context.ApplicationContext属性访问,并可以存储进程全局状态。
    • 使用流程中的其他public static字段来包含共享信息。
    • 提供ContentProvider实施,在提示时存储并提供所需数据。
    • SQLite的?
    • 等。

答案 1 :(得分:0)

您没有在Android中的活动中实现构造函数。在调用onCreate()后,请在super.onCreate()中执行此类初始化。

(我对Java语法表示道歉 - 我不会说C#)