0

我在运行时创建了 10 个按钮。我怎样才能得到他们的ID?

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

4 回答 4

3

你的问题没有很好的形成。我假设您不想获取 id 本身,而是想访问Button您不知道的名称。所以基本上你不能用id. 您完全误解了idin的概念View- 它只是View对象中的一个字段,您可以使用它来标识您的特定对象,但您不能将其用作字段名称,因此 1.getX() (1按钮的 id在哪里) 不可能。

您想要的是创建(而不是创建一组Button称为 b1、b2、b3、b4 等的 s)一个Buttons 数组并使用索引访问它们:

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()

我已经在你的函数内部创建了这个数组,但是当然,如​​果你想从函数外部访问它,你可能想要将它声明为例如你的类的一个字段。

于 2013-01-30T17:33:10.413 回答
1

除非您设置动态创建按钮的 ID,否则它们不会有特定的 ID。因此,当您创建这些按钮时,通过说设置一些 id

button.setId(东西)

接着

button.getId()
于 2013-01-30T17:31:08.217 回答
0

使用视图的getId ()方法:

button_1.getId();
于 2013-01-30T17:29:55.990 回答
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);
    ...
}
于 2013-01-30T17:31:06.300 回答