繁体   English   中英

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

[英]Can an activity default constructor be overloaded with monodroid?

在标准的C#中,我可以用类似的东西重载默认构造函数

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

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

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

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

  1. 意图也是一种IPC机制(因为一个Activity实际上可能存在于另一个进程中 - 这是设计的),所以你只能被限制为可以跨进程边界编组的类型。
  2. String s, int和其他内置类型,但不完全是“高级”对象。
  3. 通过android.os.Parcelable接口支持“更高级别”对象,但(a)具有“按值分组”语义,因此对于在活动之间共享读取和写入数据没有用,并且(b) Mono for Android目前不支持实现此接口

那么如何在活动之间共享数据? 通过撑船。

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

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

(我为Java语法道歉 - 我不会说C#)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM