我在运行时创建了10个按钮。我怎样才能得到他们的身份证?
private void buttons() {
int count = 10;
for (int i = 0; i < count; i++) {
Button newButton = new Button(this);
newButton.setId("button_" + i);
LinearLayout ll = (LinearLayout)findViewById(R.id.linear);
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
ll.addView(newButton,lp);
}
}
我需要做的是......
button_1.getX();
答案 0 :(得分:3)
你的问题不是很好。我假设你不想自己获取id,而是想要访问那个你不知道名字的Button
。所以基本上你不能用id
实现这个目标。您完全误解了id
中View
的概念 - 它只是View
对象中的一个字段,您可以使用该字段来标识您的特定对象,但您不能将其用作字段名称,因此1.getX()(其中1
是按钮的id)是不可能的。
你想要的是创建(而不是创建一堆名为b1,b2,b3,b4等的Button
)Button
的数组,并使用索引访问它们:< / p>
private void buttons() {
int count = 10;
Button [] buttons = new Button[count];
for (int i = 0; i < count; i++) {
buttons[i] = new Button(this);
LinearLayout ll = (LinearLayout)findViewById(R.id.linear);
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
ll.addView(buttons[i],lp);
}
}
然后您可以访问特定按钮,就像访问数组中特定位置的对象一样:
buttons[id].getX()
我在你的函数中创建了这个数组,当然如果你想从函数外部访问它,你可能想要将它声明为你的类的一个字段。
答案 1 :(得分:1)
除非您设置动态创建的按钮的ID,否则它们将没有特定的ID。因此,在创建这些按钮时,请通过说
来设置一些IDbutton.setId(something)
然后
button.getId()
答案 2 :(得分:0)
使用视图的getId()方法:
button_1.getId();
答案 3 :(得分:0)
跟踪按钮的实例。在代码中创建控件时不是id。
例如:
Map<Integer, Button> buttons = new HashMap<Integer, Button>()
for (int i = 0; i < count; i++) {
Button newButton = new Button(this);
buttons.add(i, newButton);
...
}