我的程序需要根据参数,动态的生成若干EditText和RadioButton,当操作者输入了参数后点击【运行】按钮。此时,需要将画面上所有控件上入力的信息获取到,然后进行业务处理。小弟刚刚接触Android,只知道在Activity中能用findViewById这个方法获得画面上的控件,然后再获得控件上的Text属性值。 这样的话,就需要在动态生成控件的时候,给生成的控件分配Id。我现在的做法是在循环里边把循环变量int i作为控件的Id属性赋值。但我觉得这样做很不安全,不知道有没有什么其他的解决方案。望高手指点 小弟先谢谢了!!!! 注:在xml定义好控件的Id后android可以自动的将其转换为int型在R.java中生成,不知这一转化的规则是什么?如果我可以也用这样的方法将String型的控件名称转化为Int型赋给id的话这样就好多了。但不知能不能实现。
你可以试试,通过getId()获取控件的ID,如果和R.java中的一样,那说明可以自己分配,而且ID不是一定要指定的,创建一个空的工程,也就是helloworld,main.xml里的textview就没有指定id,指定id是为了你可以在程序中代码方式获取控件实例。
static final int GLOBAL_ID = 0xff0000;
然后循环中每个控件的id都是GLOBAL_ID+i这样分配出来的,总之自己要清除id是怎么分配的
例如:
drawable
0x7f010000
0x7f010001
...anim
0x7f020000
0x7f020001
...color
0x7f030000
...
只要记住view名字就可以了
还不如就定义一个view的对象,然后通过这个对象来进行操作。
我动态生成的控件是为了输入参数用的。我现在采取的方案是用参数的名字,一个字符串的HashCode作为Id。然后在Onclick方法中再通过findViewById取得他。