android - 如何在 Android 中使用 XML 引用库中另一个包中的字符串?

标签 android xml string resources package

Android documentation告诉我可以通过使用“包名称”访问另一个包中的字符串,不管它是什么意思:

@[<package_name>:]<resource_type>/<resource_name>

因此,在我的 list 中,我想访问一个字符串,该字符串已放在一个单独的库项目中,在 com.globalmentor.android 包中——这就是我的 R 毕竟类是:

    <activity
        android:label="@com.globalmentor.android:string/app_applicationlistactivity_label"
        android:name="com.globalmentor.android.app.ApplicationListActivity" >
    </activity>

那甚至不能编译。但这确实:

    <activity
        android:label="@string/app_applicationlistactivity_label"
        android:name="com.globalmentor.android.app.ApplicationListActivity" >
    </activity>

为什么? Android 文档中提到的“package_name”是什么意思?为什么第一个示例不起作用,为什么第二个示例起作用?我不希望我所有的资源名称都合并到同一个 R 文件中——我希望将它们分成包,就像我写的那样。

最佳答案

简而言之:包名称前缀用于共享库,而不是您的 apk。

文档内容如下:

To reference a system resource, you would need to include the package name

这对应于外部共享库(及其资源),您的应用程序链接到(例如 map )。它们有自己的 R 类,未与您的应用程序合并。

这些都是您在 android list 部分提到的标准 android 包和共享库。

正如 Nikolay 所指出的,所有应用程序资源都是合并的,这就是为什么大多数库项目使用像 abs__ 这样的前缀作为它们的资源名称。

参见 Library projects doc了解更多信息。

关于android - 如何在 Android 中使用 XML 引用库中另一个包中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8262807/

相关文章:

python - 生成元素由标记分隔的字符串时避免键入冗余

python - 从python中为postgresql中的union中的每个查询选择特定列

java - 从 Cordova 插件在服务中启动 Vitamio

android - Proguard 重复 Zip 条目

javascript - 将 Ajax 请求从 Javascript 转换为 jQuery

ruby - 如何在 Ruby 中 %w[text] 不包含\n它换行的地方

java - Android java、数据库类中的Dao接口(interface)似乎很奇怪

java - HashMap 有 key,但它的 containsKey 方法返回 false?

c# - 从 XML 中获取标签值

.net - XmlWriter 编码问题