2012-03-29 1 views
11

Я пытаюсь создать дочерний класс «Android.App.Application», чтобы переопределить «OnCreate()», но я не могу заставить его работать. Вот мой код:Пользовательский класс приложений для детей в Mono для Android

namespace MonoAndroidAcra { 
    [Application(Debuggable=true, 
       Label="insert label here", 
       ManageSpaceActivity = typeof(MainActivity))] 
    class AcraApp : Application { 
    public override void OnCreate() { 
     base.OnCreate(); 
    } 
    } 
} 

MainActivity просто пример по умолчанию активность.

Теперь, когда я отладки проекта я получаю System.NotSupportedException:

Невозможно активировать экземпляр типа MonoAndroidAcra.AcraApp из родной ручки 405191a0

Нет стек вызовов недоступен для этого исключения.

Как это сделать правильно? Я не мог найти примеров для этого.

Я использую последнюю стабильную версию Mono для Android.

ответ

27

Вам нужно добавить этот конструктор в класс, чтобы сделать его работу:

public AcraApp (IntPtr javaReference, JniHandleOwnership transfer) 
    : base(javaReference, transfer) 
{ 
} 
+0

Спасибо, куча. Я искал то, что я делал неправильно! –

1

Это был «дырявая абстракция», explained by a Xamarin Team member, которые были зафиксированы в последней Xamarin Android версии 4.12.2 , в котором больше не требуется добавлять этот отсутствующий конструктор. Android SDK 22.6 также необходим для правильной работы с этой версией Xamarin. Однако обновление SDK только не решит эту проблему, это действительно связано с Xamarin.

Для всех, кто использует устаревшую версию, все еще должен использоваться Greg's solution.

+0

Кажется, что [@GregShackles answer] (http://stackoverflow.com/a/9963637/121968) требуется даже для 6.1.0.71. –

+0

@TN. Приятно знать спасибо за то, что указали на это, я задаюсь вопросом, что это регрессионный вопрос, который только что вернулся. Я не использовал Xamarin уже около двух лет. – ForceMagic

 Смежные вопросы

  • Нет связанных вопросов^_^