【发布时间】:2011-04-18 10:39:54
【问题描述】:
我有一个关于从 android 库继承资源的问题。
假设您有一个 android 库项目,并且在该库中您将一些资源(暂时假设为字符串)放在包名 com.libexample 下
现在在一个名为 com.example 的包名下的 android 项目中,我引用了我之前创建的库。
如果我想使用库的字符串之一,我可以使用它来获取它
getString(com.libexample.R.string.test_string);
我的问题是,我的主项目中的字符串资源是否可以分配与我的库中的字符串相同的整数 ID?因为如果是,那么上面的代码语句实际上将等于:
getString(R.string.new_string);
假设 new_string 资源被分配了与 test_string 资源相同的 ID。
【问题讨论】:
-
我假设 id 可以匹配,除非以下两种可能性之一成立: 1. Android 编译器足够智能,可以搜索每个库以查找每个名为
R的类并检查每个都用于已经使用的 id(我认为不太可能)。 2.R中的 id 不是完全随机的,并且包含来自其编译单元的足够信息,因此com.libexample.R中的 id 可以有效地保证不会与com.someotherthing.R中的 id 重合(更有可能)。