Найти идентификатор кнопки, которая называется намерение / деятельность?Android - PullRequest
2 голосов
/ 13 января 2012

Мой основной макет активности содержит 10 разных кнопок, которые все вызывают одну и ту же активность (MapsActivity).

Как узнать идентификатор кнопки, которая была нажата в MapsActivity?Я попытался отправить его с помощью

intent.putExtra ("id", id);

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

Нужно ли создавать отдельное намерение для каждой кнопки, которые все вызывают одно и то же действие?Или я могу использовать 1 намерение и просто изменить, какое значение оно передает в MapsActivity?

Надеюсь, я достаточно ясно объяснил эту проблему!Спасибо!

1 Ответ

2 голосов
/ 13 января 2012

вы говорите, что добавляете слушателей к кнопкам в своем коде с помощью findViewById, поэтому я предполагаю, что у вас есть требования, которые означают, что вы не можете создать свой макет в xml. поэтому, когда вы настраиваете свое первое действие, которое содержит все эти кнопки, убедитесь, что все они получают одинаковый приемник щелчков. мы можем вызвать этот метод слушателя mapsButtonListener. это должно быть объявлено так:

public void mapsButtonListener(View sender) {
    int id = sender.getId();
    Intent mapsActivity = new Intent(getApplicationContext(), MapsActivity.class);
    mapsActivity.putExtra("button_id", id);
    startActivity(mapsActivity);
}

об идентификаторе нашей кнопки: s

если вы размещаете свои кнопки с дизайном XML, просто убедитесь, что у них есть идентификаторы, объявленные в XML. однако, если вы не используете для них xml, а вместо этого создаете их экземпляры в коде, то вам придется использовать метод setId(4), чтобы дать вашим кнопкам id: s (не давать все они 4 очевидно, хе-хе). это должно быть сделано одновременно с добавлением прослушивателя кликов. Кроме того, убедитесь, что вы знаете, какая кнопка получает какой номер, чтобы вы могли проверить это позже.

получение идентификатора в MapsActivity

как только запустится mapsActiviy, мы захотим этот идентификатор. мы делаем это с помощью следующей строки (внутри класса MapsActivity):

 int id = getIntent().getIntExtra("button_id");
...