库项目中的Xamarin Android布局资源未包含在应用程序中

库项目中的Xamarin Android布局资源未包含在应用程序中,xamarin,xamarin.android,Xamarin,Xamarin.android,我有一个XamarinAndroid库项目,它被一个Android应用程序项目引用 库项目具有库项目组件需要使用的布局文件。Resource.designer.cs文件似乎已正确生成。布局被标记为Android资源。但在运行时,资源并不存在。尝试访问它们只会返回0 在阅读了所有关于这个主题的问题之后,我相信这应该是可行的,但到目前为止还不行。想法 创建Android类库。 在此类库中创建布局文件夹并在此文件夹中创建布局。 在xamarin android应用程序中添加代码 var btn_L

我有一个XamarinAndroid库项目,它被一个Android应用程序项目引用

库项目具有库项目组件需要使用的布局文件。Resource.designer.cs文件似乎已正确生成。布局被标记为Android资源。但在运行时,资源并不存在。尝试访问它们只会返回0

在阅读了所有关于这个主题的问题之后,我相信这应该是可行的,但到目前为止还不行。想法

  • 创建Android类库。

  • 在此类库中创建布局文件夹并在此文件夹中创建布局。

  • 在xamarin android应用程序中添加代码

    var btn_Load = FindViewById<Button>(Resource.Id.btn_LoadLibraryLayout);
        btn_Load.Click += delegate
        {
            SetContentView(ClassLibrary1.Resource.Layout.library_layout);
        };
    
  • 您还可以在此活动中获取资源标识符

    var resId2 = Resources.GetIdentifier("library_layout", "layout", PackageNname);
    
       int resId2 = Resources.GetIdentifier("library_layout", "layout", "com.companyname.app1");           
    
  • 结果:

    paskage名称与我提供的app1相同。 包名称:
    com.companyname.app1

    您也可以直接在app1活动中使用代码

    var resId2 = Resources.GetIdentifier("library_layout", "layout", PackageNname);
    
       int resId2 = Resources.GetIdentifier("library_layout", "layout", "com.companyname.app1");           
    

    我想这就是为什么我找不到关于这个问题的信息。从理论上讲,它应该“起作用”。但是,当我尝试在运行时从应用程序项目访问与
    ClassLibrary1.Resource.Layout.library\u Layout
    相当的内容时,它是
    0
    。此外,如果我尝试从库项目代码中访问资源,则资源为
    0
    。我已经删除了
    Resource.Designer.cs
    ,它可以很好地重新生成。很奇怪,也许我们能找到这个。我打开了您的示例并将以下行添加到
    MainActivity.cs
    intresid=Resources.GetIdentifier(“库布局”、“布局”、“类库1”)0
    。库引用是否不正确?由于包名错误,您得到了“0”。我已经更新了我的回复,请检查。我想这个答案是正确的,但问题是库项目代码必须知道它在哪个应用程序中,这样库代码才能访问资源。