Могу ли я добавить массив для кнопок Android? - PullRequest
0 голосов
/ 07 января 2012

Моя кнопка:

  <Button
      android:text=""
      android:id="@+id/b1"
      android:gravity="center_horizontal"
      android:layout_width="100dp"
      android:layout_height="100dp"
      android:background="@drawable/the_border"
      android:textSize="75sp"/>

И у меня их много (b0, b1, b2) ...

Моя Java:

    for(int index = 0; index < 9; index++)
    {
        places[index] = (Button) findViewById(R.id.b + index);
        places[index].setOnClickListener(this);
    }

Как я мог это сделать?findViewById(R.id.b + index) необходимо изменить.Является ли это возможным?Спасибо

Ответы [ 2 ]

1 голос
/ 07 января 2012

Используйте свойство tag, чтобы задать им последовательные теги 0, 1, 2 и т. Д., Затем findViewWithTag() в цикле для построения массива.Обратите внимание, что тег - это строка, а не число.

0 голосов
/ 07 января 2012

Таким образом, вы не добавляете эти кнопки в макет.

1) вы не можете присвоить этим кнопкам (или контейнеру / элементу в целом) один и тот же идентификатор. Идентификатор является уникальным идентификатором, поэтому он должен быть уникальным 2) findViewById будет искать в макете три, чтобы найти элемент с этим идентификатором. Если этот элемент не существует (вы не добавляете его в макет), он потерпит неудачу с нулевым указанием исключения.

Что вам нужно сделать, это создать кнопки из вашего Java-кода и добавить их в контейнер (например, LinearLayout).

Итак, вы делаете findViewById и ищите контейнер, затем добавляете View (кнопку) в этот контейнер.

Вам нужен пример кода?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...