0

今天发现一个很奇怪的bug——系统在SetBackgroundResource()方法中使用了错误的ResId。当然,我认为这是我的错误。我通过从 R 文件复制和粘贴 ResId 来修复它。在我多次重新安装该应用程序进行测试后,我注意到再次设置了错误的图像,所以它弄乱了我的应用程序。我去了相应的方法,发现 Eclipse 插入了一个非常相似(但错误!..015 而不是 ..016)的 ResId 作为方法参数,而我没有任何操作。

我认为这并不重要,但这种奇怪的事情总是在这里发生:

LinearLayout nlap = new LinearLayout(this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.MATCH_PARENT,
    LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(10, 5, 10, 0);
nlap.setLayoutParams(params);
nlap.setOrientation(LinearLayout.HORIZONTAL);
nlap.setBackgroundResource(0x7f020016);
nlap.getBackground().setAlpha(111);
return nlap;
4

1 回答 1

0

只需清理所有相关项目并重新构建。

永远不要对 R.id 进行硬编码。

我以前见过这种情况:对于旧版本的 ADT 和库项目,有时会发生这种情况。没有用 ADT 21 看到它。

最近,对我来说,Eclipse 开始在 R.id 的红色下划线,好像它们是错误的或未知的,但它们不会出现在问题视图中,它们实际上并没有错。我仍在为此寻找错误报告。

于 2012-12-23T20:36:23.437 回答