Что такое id для каждого элемента View

Ответить
Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Что такое id для каждого элемента View

Сообщение trew » 01 ноя 2013, 11:40

Код для разбора:
[syntax=java]TextView textView1 = (TextView)findViewById(R.id.textView22);
TextView textView2 = (TextView)findViewById(R.id.textView23);

Log.d(TAG, "-- textView1 -- " + textView1.getId()); // 213.....21
Log.d(TAG, "-- textView2 -- " + textView2.getId()); // 213....22

textView1.setId(50);
textView2.setId(50);

Log.d(TAG, "-- textView1 -- " + textView1.getId()); // -- 50
Log.d(TAG, "-- textView2 -- " + textView2.getId()); // -- 50

textView1.setText("test 34 34 34");[/syntax]
В итоге значение присвоилось только для textView1. Но мы ведь имеем две View c одинаковым id.
Почему для textView2 не произошло присвоение?
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Что такое id для каждого элемента View

Сообщение rezak90 » 01 ноя 2013, 12:50

потому что такого делать нельзя =)
R.id.team
Политика на форуме запрещена

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Что такое id для каждого элемента View

Сообщение Foenix » 01 ноя 2013, 13:00

что творят канадцы..
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Что такое id для каждого элемента View

Сообщение Mikhail_dev » 01 ноя 2013, 13:19

Судя по коду, данный ID не уникальный и я честно говоря не понял нафига он вообще нужен.
[syntax=java5] /**
* Sets the identifier for this view. The identifier does not have to be
* unique in this view's hierarchy. The identifier should be a positive
* number.
*
* @see #NO_ID
* @see #getId()
* @see #findViewById(int)
*
* @param id a number used to identify the view
*
* @attr ref android.R.styleable#View_id
*/
public void setId(int id) {
mID = id;
if (mID == View.NO_ID && mLabelForId != View.NO_ID) {
mID = generateViewId();
}
}[/syntax]

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Что такое id для каждого элемента View

Сообщение trew » 01 ноя 2013, 13:42

no--
ID - это идентификатор View, поэтому он должен быть уникальный.
К элементам можно обращаться по ID или по наименованию.

rezak90
поэтому я думал получу ошибку или создам группу View-s :)
А ни то и не другое ни получил.

Когда смотрел проекты после обфускации, там было так
TextView textView1 = (TextView)findViewById(2130151515);
т.е. подставляется ID элемента.

Дополенение:
[syntax=java]switch (item.getItemId()) {
case 50:
Intent i = new Intent(this, ThirdActivity.class);
startActivity(i);
break; [/syntax]
Activity запускается для обоих View у которых ID =50.
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Что такое id для каждого элемента View

Сообщение Mikhail_dev » 01 ноя 2013, 14:02

no--
ID - это идентификатор View, поэтому он должен быть уникальный.
К элементам можно обращаться по ID или по наименованию.
Оооох, читай документацию к методу, я же её скопипастил.
И вообще, когда говорят про ID и про его уникальность, говорят про его область видимости. Где он должен быть по твоему уникальным?

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Что такое id для каждого элемента View

Сообщение trew » 01 ноя 2013, 14:11

В пределах проекта, по моему. Все ID хранятся в R.java
что происходит после выполнения команды textView1.setId(50) ?
я переопределил значение, в области видимости класса, а в пределах проекта старое значение осталось?
что-то не пойму.
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Что такое id для каждого элемента View

Сообщение rezak90 » 01 ноя 2013, 14:55

зачем view менять id?
R.id.team
Политика на форуме запрещена

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Что такое id для каждого элемента View

Сообщение trew » 01 ноя 2013, 15:06

rezak90 писал(а):зачем view менять id?
Ну, к примеру нужно открывать меню откуда угодно (много Activity-s), и чем-угодно.
[syntax=java]menu.setHeaderTitle("Заголовок меню");
menu.add(0, 50, 0, "Наименование 0");
menu.add(0, 51, 0, "Наименование 1");
menu.add(0, 52, 0, "Наименование 2");
menu.add(0, 53, 0, "Наименование 3");
menu.add(0, 54, 0, "Наименование 4");
menu.add(0, 55, 0, "Наименование 5");[/syntax]
Я ведь не знаю названий View заранее. Вот и придумал присвоить ID.
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Что такое id для каждого элемента View

Сообщение Foenix » 01 ноя 2013, 15:23

В данном случае вьюшкам можно присваивать tag, и по нему определять что нужно делать. Удобное свойство.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Что такое id для каждого элемента View

Сообщение trew » 01 ноя 2013, 15:35

Foenix писал(а):В данном случае вьюшкам можно присваивать tag, и по нему определять что нужно делать. Удобное свойство.
textView1.getTag(); // результат =50
как теперь запустить контекстное меню для него?

до этого привязывал так: registerForContextMenu(textView1);
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Что такое id для каждого элемента View

Сообщение Foenix » 01 ноя 2013, 15:54

да нет, я не для этого пример приводила.

А контекстное меню - вообще устарело и не рекомендуется для использования разработчиками. Я им не пользуюсь.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Что такое id для каждого элемента View

Сообщение trew » 01 ноя 2013, 15:56

А какой сегодня тренд в моде, на что обратить внимание?
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Что такое id для каждого элемента View

Сообщение rezak90 » 01 ноя 2013, 15:56

есть ещё люди которые юзают контекстное меню? оО
R.id.team
Политика на форуме запрещена

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Что такое id для каждого элемента View

Сообщение rezak90 » 01 ноя 2013, 15:59

trew писал(а):А какой сегодня тренд в моде, на что обратить внимание?
последний писк в моде это использовать EditMode (или как его там обзывают) в ActionBar
R.id.team
Политика на форуме запрещена

Ответить