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/