Страница 1 из 1

Как передать параметр в диалоговое окно?

Добавлено: 23 мар 2012, 18:43
beavis
В андройде только разбираюсь по этому может вопрос и глупый, но ответа нигде не нашел.
Суть проблемы:
есть несколько кнопок, при нажатии на любую кнопку вызывается один и тотже AlertDialog
как мне из диалога узнать по нажатию на какую кнопку он был вызван?

Re: Как передать параметр в диалоговое окно?

Добавлено: 23 мар 2012, 19:25
KamiSempai
Диалог или Активити? Если все таки диалог, какие функции он выполняет?

Если что, подобные вопросы стоит задавать в ЭТОЙ теме.

Re: Как передать параметр в диалоговое окно?

Добавлено: 26 мар 2012, 09:03
beavis
именно диалог.
Пишу небольшую игрушку, в основной активности на экране несколько кнопок, при нажатии на любую из кнопок выскакивает диалог с вариантами ответа (для каждой кнопки варианты разные), в диалоге мне нужно как-то узнать какая кнопка вызвала диалог.

Re: Как передать параметр в диалоговое окно?

Добавлено: 26 мар 2012, 10:17
damager82
Наверно только через глобальную переменную.

Re: Как передать параметр в диалоговое окно?

Добавлено: 26 мар 2012, 10:21
beavis
тогда еще нужно будет какую-нибудь синхронизацию делать для мультитатча, чтобы одновременно две кнопки не нажались, или это как-то на уровне операционки разруливается?

Re: Как передать параметр в диалоговое окно?

Добавлено: 26 мар 2012, 11:20
andev
Две кнопки не нажмутся в любом случае - одна из них будет первой, можете проверить сами.

Re: Как передать параметр в диалоговое окно?

Добавлено: 26 мар 2012, 11:35
beavis
к сожаления пока неначем проверить, тренируюсь на эмуляторе... но если все так как Вы говорите то это хорошо.

Re: Как передать параметр в диалоговое окно?

Добавлено: 26 мар 2012, 16:46
damager82
Как раз в этот четверг будет урок с такой ситуацией, когда я в диалоге отслеживаю, какой кнопкой он был вызван. Я использую переменную.

Re: Как передать параметр в диалоговое окно?

Добавлено: 26 мар 2012, 17:11
KamiSempai
Можно сделать через Bundle. Технология примерно следующая:
При нажатии кнопки

Код: Выделить всё

Bundle args = new Bundle();
args.putLong("ButtonID", BUTTON1);
showDialog(ALERT_DIALOG, args);
onPrepareDialog должен выглядеть следующим образом

Код: Выделить всё

protected void onPrepareDialog(int id, Dialog dialog, Bundle args) {
        super.onPrepareDialog(id, dialog);
        switch(args.getLong("ButtonID")) {
		case BUTTON1:{
			// Настраиваем диалог под кнопку 1
			break;
		}
		case BUTTON2:{
			// Настраиваем диалог под кнопку 2
			break;
		}
		// И так далее...
	}
}
Геморроя в данном случае, конечно, по больше чем с глобальной переменной :)

Re: Как передать параметр в диалоговое окно?

Добавлено: 27 мар 2012, 11:33
beavis
спасибо, примерно такого и ожидал, буду пробовать