public static final int main=0x7f030004;
然而,截至ADT 14,他们将宣布如下:
public static int main=0x7f030004;
在R文件少了个final
换句话说,常量not final 在图书馆项目。原因很简单:当多个库项目相结合,实际值的字段(必须是唯一的)可能发生碰撞。ADT 14之前,所有字段都是决赛,所以作为一
个结果,所有库必须有他们所有的资源和相关的Java代码重新编译以及使用时的主要项目。这是糟糕的性能,因为它使构建非常缓慢。这也防止了分配库项目,不包括源
代码,限制了使用范围的库项目。
领域的原因不再是最后的是,它意味着库jar可以被编译一次,直接在其他项目中重用。以及允许分发二进制版本的库项目(进来r15),这使得更快的构建。
然而,它有一个影响图书馆的源代码。下面的代码形式将不再编译:
这是因为开关语句需要所有case标签,比如 R.id.button1,在编译时保持恒定(这样值可以直接复制到 .class 文件)。
这个问题的解决方案非常简单:转换开关语句变成一个if - else语句。幸运的是,这是很容易在Eclipse中。只是把插入符号在开关的关键字,并按下ctrl + 1(或cmd 1在Mac):
将上面的场景中,把switch语句改为:
int id = v.getId();
if (id == R.id.button1 ){
} else {
}