我的应用程序变得有点臃肿,我想通过将一些变量更改为数组并使用一些for循环来处理我的变量来“压缩”一些代码。 我的第一个目标是初始化我的EditText框
我的原始代码(工作正常)包括:
EditText miBox1, spBox1 ;
EditText miBox2, spBox2 ;
...
miBox1 = (EditText)this.findViewById(R.id.miBox1);
spBox1 = (EditText)this.findViewById(R.id.spBox1);
miBox2 = (EditText)this.findViewById(R.id.miBox2);
spBox2 = (EditText)this.findViewById(R.id.spBox2);
我实际上有20个mi框和20个sp框来设置 我正在尝试创建一个数组,并循环遍历它们
在我的main.xml中,我将EditText框重命名为 miBox [1] spBox [1]等。
我在我的活动中声明:
EditText[] miBox = new EditText[20] ;
EditText[] spBox = new EditText[20] ;
并将其置于for循环中
miBox[i] = (EditText)this.findViewById(R.id.miBox[i]);
spBox[i] = (EditText)this.findViewById(R.id.spBox[i]);
但Eclipse无法解析R.id.miBox [i]
如何在我的xml中正确创建EditText数组 它被认可了?
由于 JD
答案 0 :(得分:4)
int resID = getResources().getIdentifier("miBox" + i,
"id", getPackageName());
其中i是你的索引
EditText editText = (EditText)findViewById(resId);
如果你想把它放在一个数组中,只需这样做:
miBox[i] = (EditText)findViewById(resId);
答案 1 :(得分:3)
这里的问题是你错误地修改了一些东西。
代码应该是:
EditText[] miBox = new EditText[20] ;
EditText[] spBox = new EditText[20] ;
并将其置于for循环中
miBox[i] = (EditText)this.findViewById(R.id.miBox1);
spBox[i] = (EditText)this.findViewById(R.id.spBox1);
这里,msitake正在使用miBox[i]
,因为那不是你在布局xml中使用的id。
希望这会有所帮助。