Xamarin Android Layout Ресурсы в проекте библиотеки не включены в приложение - PullRequest
0 голосов
/ 19 октября 2019

У меня есть проект библиотеки Xamarin для Android, на который ссылается проект приложения Android.

В проекте библиотеки есть файлы макетов, которые должны использоваться компонентом проекта библиотеки. Файл Resource.designer.cs создается правильно. Макеты помечены как ресурсы Android. Все же во время выполнения ресурсы не там. Попытка получить к ним доступ просто возвращает 0.

Прочитав все вопросы SO по этой теме, я убежден, что это должно сработать, но пока это не так. Идеи?

1 Ответ

0 голосов
/ 21 октября 2019
  1. Создание библиотеки классов Android. enter image description here

  2. Создайте папку макета в этой библиотеке классов и создайте макет в этой папке. enter image description here

  3. Добавьте код в ваше приложение xamarin для Android.

    var btn_Load = FindViewById<Button>(Resource.Id.btn_LoadLibraryLayout);
        btn_Load.Click += delegate
        {
            SetContentView(ClassLibrary1.Resource.Layout.library_layout);
        };
    

Я создаю кнопку дляоткройте макет в библиотеке классов.

Результат:

enter image description here

Вы можете загрузить из папки ClassLibrary_layout вGitHub для справки. https://github.com/WendyZang/Test.git

Обновлено:

Если вы хотите получить идентификатор ресурса, вам нужно имя пакета этой библиотеки классов. Во-первых, нам не удалось получить имя пакета в файле или свойствах AndroidManifest.xml, поскольку в библиотеке классов его нет.

Вы можете получить его из следующих шагов.

  1. Создать занятие в библиотеке классов. И получите имя пакета с кодом.

    var PackageNname = Application.Context.PackageName;
    
  2. Вы также можете получить идентификатор ресурса в этом упражнении.

    var resId2 = Resources.GetIdentifier("library_layout", "layout", PackageNname);
    

Результат:

enter image description here

Имя paskage совпадает с предоставленным мною приложением1. Имя пакета: com.companyname.app1

Вы также можете использовать код непосредственно в активности app1.

   int resId2 = Resources.GetIdentifier("library_layout", "layout", "com.companyname.app1");           
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...