Intereting Posts

Как зарегистрировать мой собственный подкласс приложения в Xamarin.Android?

у меня есть

public class MyApp : Application 

В Java я бы добавил строку в манифест и передал ей пространство имен и имя моего приложения:

 <application android:icon="@drawable/icon" android:label="@string/app_name" android:name="com.devahead.extendingandroidapplication.MyApplication"> 

В Xamarin есть атрибут [Application] но в документации указано, что элемент Name не поддерживается . Итак, как я могу зарегистрировать свой подкласс? Где применить атрибут?

Если я добавлю атрибут в свой подкласс, я получаю:

 System.NotSupportedException: Unable to activate instance of type TestClient_Android.MyApplication from native handle 14d00019 

Solutions Collecting From Web of "Как зарегистрировать мой собственный подкласс приложения в Xamarin.Android?"

Найди его. Документация устарела. Вам понадобится специальный c'tor с двумя параметрами, и вам придется добавить атрибут [Application] :

 [Application] public class MyApplication : Application { public MyApplication(IntPtr handle, JniHandleOwnership ownerShip) : base(handle, ownerShip) { } } 

EDIT: Кроме того, кажется, что нужно переопределить OnCreate (). Если у вас есть только конструктор, он не будет вызван.

 public override void OnCreate() { // If OnCreate is overridden, the overridden c'tor will also be called. base.OnCreate(); } 

EDIT November 2015: вот ссылка на документацию Xamarin, которая объясняет, почему такое поведение существует .

… Xamarin.Android подключается к этому, добавляя mono.MonoRuntimeProvider ContentProvider в AndroidManifest.xml во время процесса сборки. Метод mono.MonoRuntimeProvider.attachInfo () отвечает за загрузку Mono runtime в процесс. Любые попытки использовать Моно до этого момента не удастся. (Примечание. Вот почему типы, для подкласса Android.App.Application необходимо предоставить конструктор (IntPtr, JniHandleOwnership), поскольку экземпляр приложения создается до того, как Mono может быть инициализирован.)