因此,我正在为Android 4.0在Eclipse中编写一个简单的计算器,并尝试将我的代码流水线化,使其尽可能简单。我要清理的地方是我的findViewById(),因为我有按钮0-9来实例化,所以我有一个十行长的代码块,看起来像这样:
b0 = (Button) findViewById(R.id.b0);
b1 = (Button) findViewById(R.id.b1);
...
b9 = (Button) findViewById(R.id.b9);正如您所看到的,这个东西只是在请求一个for循环。所以我想做的是做两个数组。Activity中的一个实例变量数组,用于保存数字键盘的所有Button实例变量:
private Button[] numberPad = {b0,b1,b2,b3,b4,b5,b6,b7,b8,b9};然后是R.java文件中id类中的另一个数组,该数组包含所有按钮id变量,如下所示:
private static final int[] numberPad = {b0,b1,b2,b3,b4,b5,b6,b7,b8,b9};所以我可以使用这个循环将十行Button实例减少到两行:
for(int i = 0; i < numberPad.length; i++)
numberPad[i] = (Button) findViewById(R.id.numberPad[i]);当我键入它时,它是好的,但当我去保存它时,它会自动恢复到它的原始形式。我看不出这段代码有什么问题。据我所知,它不会产生任何错误。为什么不能这样编辑R.java文件?有没有办法这样做?我应该吗?
发布于 2011-12-04 19:17:37
即使你确实尝试过这种方法,你也必须使用反射来获得"findViewbyID“,因为(R.id.numberPadi)现在可以在没有反射的情况下工作。
也不要使用反射,尽管它会整洁你的代码,但它非常慢。
https://stackoverflow.com/questions/8374838
复制相似问题