Android:获取动态创建按钮的ID

时间:2013-01-30 17:27:28

标签: android

我在运行时创建了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();

4 个答案:

答案 0 :(得分:3)

你的问题不是很好。我假设你不想自己获取id,而是想要访问那个你不知道名字的Button。所以基本上你不能用id实现这个目标。您完全误解了idView的概念 - 它只是View对象中的一个字段,您可以使用该字段来标识您的特定对象,但您不能将其用作字段名称,因此1.getX()(其中1是按钮的id)是不可能的。

你想要的是创建(而不是创建一堆名为b1,b2,b3,b4等的ButtonButton的数组,并使用索引访问它们:< / 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。因此,在创建这些按钮时,请通过说

来设置一些ID
button.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);
    ...
}