@Axeles
Нечего тут пока писать

Как реализовать несколько действий одной кнопкой?

Всем доброго времени суток. У меня такой вопрос - можно ли на одну кнопку задать несколько действий?

То есть, к примеру, нажимаешь один раз - цвет приложения меняется на красный, второй раз - на зелёный и т.п. Я понимаю, что это будет метод switch, но ведь кнопка-то у меня одна, что мне там перебирать, не пойму? Как это сделать? Напишите, пожалуйста...
  • Вопрос задан
  • 6161 просмотр
Пригласить эксперта
Ответы на вопрос 3
VYakushev
@VYakushev
Разработчик Android в Nowtaxi
@AlexRudkowskij предложил в принципе рабочее решение, но не очень красивое с точки зрения ООП и паттернов проектирования. Осмелюсь предложить другой вариант. Для каждого цвета реализуем несколько полей, реализующих View.OnClickListener. При этом в обработчике каждого меняем сначала цвет кнопки на нужный, а потом прописывает кнопки следующий класс-слушателя. Ну, а при старте Activity назначаем один из слушателей.

redButtonListener = new View.OnClickListener() {
	@Override           
	public void onClick(View v) {
		myButton.setBackgroud(R.drawable.green);
		myButton.setOnClickListener(greenButtonListener);
		// выполняем дополнительные действия
	}
}

greenButtonListener = new View.OnClickListener() {
	@Override           
	public void onClick(View v) {
		myButton.setBackgroud(R.drawable.red);
		myButton.setOnClickListener(redButtonListener);
		// выполняем дополнительные действия
	}
}


Таким образом достигаем:
1. Понятности в коде. Не надо в голове держать какой индекс за какой цвет должен отвечать. Код самодокументированный.
2. Легко вносить правки при добавлении новых цветов.
3. Каждый обработчик нажатий в отдельном месте, а не в лапше if или swith
Ответ написан
@AlexRudkowskij
Студент
Вы неправильно понимаете свою задачу :(
Ответ написан
Комментировать
@AlexRudkowskij
Студент
А вообще вот как нужно сделать:
1) Сделать событие для кнопки. Сделать массив цветов.
2) При нажатии на кнопку устанавливать первый цвет. Прибавить к переменной единицу(эта переменная - индекс цвета из массива)

И так далее... При нажатии на кнопку ставим цвет(colors[i]), и прибавляем единицу(i++).
Примерно так :-)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы