您的位置:首页 > 其它

As of ADT 14, resource fields (such...)are no longer constants

2016-01-13 08:53 471 查看
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 {
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  error