在 java 文件中使用 MonoDroid 生成的资源?

Posted

技术标签:

【中文标题】在 java 文件中使用 MonoDroid 生成的资源?【英文标题】:Use MonoDroid generated resources in java files? 【发布时间】:2012-08-01 09:20:29 【问题描述】:

我创建了一个 MonoDroid 库项目并向项目中添加了一些资源。当我在 C# 类中使用这些资源时,它工作正常。 (为此,我必须将 and 标记添加到从应用程序项目复制的 .csproj 文件中)。

现在我想使用我在 .java 文件中添加的资源。我添加了 Java 源文件并将构建操作设置为 androidJavaSource。不幸的是,我找不到使用 R 命名空间的资源。没有生成包含我的资源的 .java 文件。有没有办法在我的 java 文件中使用 MonoDroid 生成的资源?

背景:我想在我的项目中使用 ActionBar,并考虑在 Library 项目中使用 Android 的 ActionBarCompat 项目(位于 [...]\android-sdk\samples\android-14\ActionBarCompat)作为源文件.那里的 .java 文件使用其 res 文件夹中的布局和其他资源,我也会将其复制过来。我想使用上述方法。如果(目前)不可能,欢迎使用更好的方法回答。 (不,请不要将我指向其他 ActionBar 实现,谢谢。这不是问题的范围。)

【问题讨论】:

【参考方案1】:

Xamarin 前段时间似乎解决了这个问题。我使用的是旧版本的 MonoDroid,没有时间升级到新版本。这是一种解决方法。

Xamarin.Android 编译器从库文件中链接资源,并在应用项目的 Resources.designer.cs 文件中创建一个名为 UpdateIdValues() 的函数。该函数用于将库项目中的资源 id 固定为最终在主项目中生成的正确 id。因此,库项目中的资源 id 被声明为“public static int”,而不是应用程序项目中的“public const int”。

在某些时候,他们忘记在某个地方实际调用此函数。因此,Xamarin 开发人员提供了一种解决方法: http://forums.xamarin.com/discussion/comment/5816/#Comment_5816

该变通办法对我有用,当我升级 Xamarin.Studio 时,我可以再次删除该变通办法,因为它应该开箱即用。

【讨论】:

以上是关于在 java 文件中使用 MonoDroid 生成的资源?的主要内容,如果未能解决你的问题,请参考以下文章

Monodroid 和 adMob 插页式广告

从monodroid类库中访问资产

如何在 MonoDevelop 中编译 MonoDroid App 时修复“OutOfMemoryError: java heap space”

Monodroid - 处理重用 ListView 行的子视图上的事件

如何在 monodroid 中使用 OpenAL 创建音频上下文?

在 monotouch/monodroid 中使用 mocks 进行单元测试