我创建了一个MonoDroid库项目,并为项目添加了一些资源。当我在C#类中使用这些资源时,它工作正常。 (为此我必须将。和标签添加到.csproj文件中,从应用程序项目复制。)
现在我想使用我在.java文件中添加的资源。我添加了Java源文件并将构建操作设置为AndroidJavaSource。不幸的是,我无法使用R命名空间找到资源。没有生成包含我的资源的.java文件。有没有办法在我的java文件中使用MonoDroid生成的资源?
背景:我想在我的项目中使用ActionBar,并考虑在库项目中使用Android的ActionBarCompat项目(位于[...] \ android-sdk \ samples \ android-14 \ ActionBarCompat中)作为源文件。其中的.java文件使用其res文件夹中的布局和其他资源,我也会复制它。我想使用上面陈述的方法。如果(目前)不可能,那么欢迎采用更好方法的答案。 (不,请不要指向其他ActionBar实现,谢谢。这不是问题的范围。)
答案 0 :(得分:0)
看来这个问题已经被Xamarin解决了。我使用的是旧版MonoDroid,没有时间升级到新版本。这是一种解决方法。
Xamarin.Android编译器链接来自库文件的资源,并在应用程序项目的Resources.designer.cs文件中创建一个名为UpdateIdValues()的函数。该函数用于将资源ID从库项目修复到最终在主项目中生成的id。因此,库项目中的资源ID被声明为“public static int”而不是app project项目中的“public const int”。
在某些时候,他们忘了在某处实际调用此功能。所以Xamarin开发人员提供了一个解决方法: http://forums.xamarin.com/discussion/comment/5816/#Comment_5816
该解决方法适用于我,当我升级Xamarin.Studio时,我可以再次删除该解决方法,因为它应该开箱即用。