Intereting Posts
Вкладки TabLayout не заполняют весь ActionBar Невозможно создать экземпляр класса android.support.v7.widget.SearchView Возможно ли создать навигационное приложение поворотного хода на Android с помощью Google Maps? Создание пользовательского editText с функцией тегов Можете ли вы восстановить удаленные модули .iml-файл в андроид-студии Как определить количество строк, видимых в TextView? Какова цель использования Intent.createChooser () в StartActivity () при отправке электронной почты на Android Android, как отображать 2 списка в одном действии один за другим Как настроить listview с помощью baseadapter Как получить доступ к существующей базе данных sqlite в Android? Как получить ширину строки на Android? Android Listview в PopupWindow onitemclick не работает на каком-либо устройстве Как определить версию Gradle? Ручная установка обновленного АПК завершается неудачей: «Подписи не соответствуют ранее установленной версии», Android Eclipse Ошибка выполнения aapt: код возврата 139

Как зарегистрировать мой собственный подкласс приложения в 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 может быть инициализирован.)