Два элемента XML с одинаковым идентификатором - PullRequest
8 голосов
/ 10 ноября 2010

Я пытаюсь изменить два TextView точно таким же образом. Я думал, что могу дать им тот же идентификатор и с помощью методов findViewById () и setText () изменить эти TextViews в две строки. Но, похоже, только один TextView изменен.

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

Ответы [ 3 ]

5 голосов
/ 10 ноября 2010

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

int[] ids = { R.id.text1, R.id.text2, ... };
for (int id: ids) {
    TextView tv = (TextView) findViewById(id);
    tv.setText("Hello, World!");
}

Конечно, было бы лучше иметь ids в качестве статического заключительного члена класса. I.e.:

public class MyActivity extends Activity {
    private static final int[] textViewIDs = {
        R.id.text1,
        R.id.text2,
        ...
    }
    ...
}
0 голосов
/ 10 ноября 2010

Идентификатор уникален для каждого View.So нельзя поделиться. То, что вы можете сделать, это получить как идентификаторы вида, извлеченные из кода, так и условия для изменения текста. Например, если (id == id1 && id == id2), отредактируйте текст.

0 голосов
/ 10 ноября 2010

Вы должны определить два разных идентификатора. Невозможно иметь виджет с таким же идентификатором, как у другого, поскольку оба являются двумя разными и независимыми виджетами.

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