найти кнопку по ID или тегу - PullRequest
2 голосов
/ 20 марта 2012

Я создал кнопку программно и присвоил ей идентификатор и метку.

Button button = new Button(this);
button.setId(i);
button.setTag(anotherID);

Я счетчик.

Теперь я хочу изменить фон этой кнопки, но не могу найти его с помощью

findViewByID(ID)

или

findViewWithTag(anotherID)

Я использую для ID и anotherID значения, с которыми я создал кнопки, но я получаю только NullPointerExceptions. Я не получаю идентификаторы из файла XML, потому что я создаю кнопки программно. Кто-нибудь знал, как я могу справиться с этим?

Ответы [ 5 ]

6 голосов
/ 20 марта 2012

сохранить созданный вами элемент в виде списка

List<Button> buttons = new ArrayList<Button>();

добавить созданную вами кнопку в список

Button button = new Button(this);
button.setId(i);
button.setTag(anotherID);

buttons.add(button);

теперь вы можете получать созданные вами списки по списку вот так

for(Button b: buttons) {
     if(b.getId().equals(your_id_to_check)) {
         //DO WHAT YOU WANT
     }
}
0 голосов
/ 20 марта 2012

Это моё решение:

public static List<Button> buttons = new ArrayList<Button>();
public static List<Integer> ids = new ArrayList<Integer>();

...

buttons.add(button);
ids.add(something.getInt(0));

...

public void changeButtonState(int res, int ID){ 
    int counter = 0;
    for(Integer i: ids){
        if(i==ID){
            Button b = buttons.get(counter);
            b.setBackgroundResource(res);
        }
        counter++;
    }
}

оно отлично подходит для моей ситуации.Идентификаторы - это некоторые идентификаторы из базы данных, они не отсортированы.

0 голосов
/ 20 марта 2012

Прежде всего, что вы хотите сделать? Если вы хотите изменить цвет фона Button после его динамического создания, тогда ваш код в порядке, но не присваивайте ему идентификатор. Так как id - это целочисленное значение, сгенерированное файлом R.java.

Просто посмотрите, и вы узнаете:

Так что используйте ниже код:

Button button = new Button(this);
button.setBackgroundColor(Color.White);

Надеюсь, вы поняли. Если у вас есть какие-либо проблемы, дайте мне знать.

0 голосов
/ 20 марта 2012

используйте тэг для поиска идентификатора элементов управления, я вставляю код здесь .. может вам помочь.

Button button = new Button(this);
button.setTag(value);

int Qid = button.getTag();
0 голосов
/ 20 марта 2012

Обычно вы сохраняете ссылку на вашу программно созданную кнопку. Никогда не устанавливайте Id вручную. R-файл создается во время компиляции, а не во время выполнения, так что ваши попытки совершенно неверны.

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