Может ли конструктор активности по умолчанию быть перегружен монодроидом? - PullRequest
0 голосов
/ 22 ноября 2011

В стандартном C # я могу перегрузить конструктор по умолчанию чем-то вроде

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

Есть ли способ сделать это в монодроиде? Я пытаюсь перегрузить конструктор по умолчанию в упражнении (просто чтобы это было весело!).

Ответы [ 2 ]

2 голосов
/ 22 ноября 2011

Можете ли вы предоставить Activity конструктор, который принимает параметры?Да.Будет ли это вообще полезно?Нет, потому что действия запускаются через Context.StartActivity () , который не предоставляет механизма для вызова конструктора не по умолчанию.

«Путь Android» для передачи данных между действиями заключается в использованиимеханизм Intent «extras», например, Intent.PutExtra (строка, строка) и Intent.GetStringExtra (строка) , который вводит собственный набор проблем:

  1. Интенты также являются механизмом IPC (поскольку действие может фактически находиться в другом процессе - это предусмотрено проектом), поэтому вы ограничены типами, которые можно маршалировать через границы процесса.
  2. String s, int s и другие встроенные типы поддерживаются, но не являются объектами «высокого уровня».
  3. Объекты «более высокого уровня» поддерживаются через android.os.Parcelable *Интерфейс 1020 *, но (а) имеет семантику «маршал по значению», поэтому бесполезен для совместного использования данных для чтения и записи между действиями, и (b) Mono для Android в настоящее время не поддерживает реализацию этого interface .

Итак, как вы делитесь данными между действиями?Путем создания.

  • Поместите данные в подкласс Application .Это будет доступно через свойство Context.ApplicationContext и может хранить глобальное состояние процесса.
  • Используйте другое поле public static в вашем процессе, чтобы содержать общую информацию.
  • Предоставляет реализацию ContentProvider , которая будет хранить и предоставлять требуемые данные при запросе.
  • Sqlite?
  • и т. Д.
0 голосов
/ 22 ноября 2011

Вы не реализуете конструкторы в действиях в Android.Пожалуйста, выполните этот тип инициализации в onCreate(), после вызова super.onCreate().

(мои извинения за синтаксис Java - я не говорю на C #)

...