Возможно ли с помощью Enum сделать переключение Layout разными цветами? Всем доброго времени суток. У меня есть такая задача. Мне необходимо при нажатии на экран смартфона сделать так что бы цвет Layout'а изменялся... Я Решил эту задачу но теперь начал изучать enum (перечисления) и загорелся таким вопросом. А можно ли с помощью Enum сделать переключение Layout разными цветами. И что то ни как не могу понять как это сделать. Можете ли вы указать что я делаю не так. Где что почитать что бы решить эту проблему. package com.example.screern;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
enum Colors {
Red, Blue, Yellow;
}
public class MainActivity extends Activity implements OnClickListener{

LinearLayout linearLayout1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

linearLayout1 = (LinearLayout)findViewById(R.id.LinearLayout1);
linearLayout1.setOnClickListener(this);

}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v) {
Colors color;
color = Colors.Red;
color = Colors.Yellow;
switch (color) {
case Red:
linearLayout1.setBackgroundColor(Color.RED);
break;
case Yellow:
linearLayout1.setBackgroundColor(Color.YELLOW);
break;
default:
break;
}

}
}
Прилагаю код возможно кто то подскажет где в нём есть ошибка.
Программа работает но выводит только жёлтый цвет, если убрать строку "color = Colors.Yellow;" то только красный цвет а самого переключения так и не происходит...

21 Авг 2019 в 07:09
330 +1
0
Ответы
1

Проблема здесь заключается в том, что при каждом нажатии на LinearLayout вы переопределяете значение переменной color на Colors.Red, а затем сразу же на Colors.Yellow. Это приводит к тому, что в итоге у вас всегда будет применяться последнее значение, т.е. цвет YELLOW.

Для того чтобы сделать переключение цветов с использованием Enum, вам необходимо сохранять текущий цвет и при каждом нажатии на LinearLayout переключать его на следующий цвет из Enum.

Примерно так:

public class MainActivity extends Activity implements OnClickListener {
LinearLayout linearLayout1;
Colors currentColor = Colors.Red;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
linearLayout1 = (LinearLayout)findViewById(R.id.LinearLayout1);
linearLayout1.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (currentColor) {
case Red:
linearLayout1.setBackgroundColor(Color.RED);
currentColor = Colors.Blue;
break;
case Blue:
linearLayout1.setBackgroundColor(Color.BLUE);
currentColor = Colors.Yellow;
break;
case Yellow:
linearLayout1.setBackgroundColor(Color.YELLOW);
currentColor = Colors.Red;
break;
default:
break;
}
}
}

Таким образом, при каждом нажатии на LinearLayout будет меняться цвет согласно заданной последовательности Red -> Blue -> Yellow и так далее.

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 829 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир