Java - установить цвет с помощью регистра переключателя - PullRequest
2 голосов
/ 17 июня 2010

Я хочу установить цвет TextView с помощью функции getColor (). Я пробовал много разных способов, но я не могу заставить его работать. Мой код не компилируется.

import java.awt.*;
import android.graphics.Color;

public class test extends Activity {

TextView text1 = (TextView) findViewById(R.id.text1);

text1.setTextColor(getcolorss(1));

public Color getColor(int x) {
   switch(x) {
       case 1: return Color.BLUE; 
       case 2: return Color.RED;
   } 
}

}

Как бы вы это сделали?

Ответы [ 2 ]

3 голосов
/ 17 июня 2010

Есть много способов сделать это.Глядя на android.graphics.Color, RED, BLUE и т. Д., Это просто int константы.Следовательно, у нас может быть что-то вроде этого:

int[] pallete = { Color.BLUE, Color.RED };

Тогда просто:

return pallete[x];

Это будет естественно throw ArrayIndexOutOfBoundsException, когда x выходит за пределы.Вы можете проверить это и сделать что-то еще, если это то, что вы хотите.Обратите внимание, что массивы в Java основаны на 0, что означает, что с учетом вышеуказанного объявления:

pallete[0] == Color.BLUE
pallete[1] == Color.RED

В исходном коде используется индексация на основе 1, поэтому при необходимости вы можете выполнить простой перевод:

return pallete[x-1];
2 голосов
/ 17 июня 2010

Вы не можете так делать, потому что если вы вызываете getcolorss (3), то нет возвращаемого состояния Попробуйте либо:

public Color getcolorss(int x)
{
 switch(x)
 {
  case 1: return Color.BLUE; 
  case 2: return Color.RED;
  default: return null;
 } 
}

или

public Color getcolorss(int x)
{
 Color result = null;
 switch(x)
 {
  case 1: result = Color.BLUE; 
  case 2: result = Color.RED;
 }
 // this allows you to do something else here, if you require something more complex
 return result;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...