У меня есть опции Activity
, где я выбираю цвет с помощью RadioButton
. По умолчанию установлен цвет White
android:checked="true"
. Теперь, когда я добираюсь до своего Canvas
, мне нужно динамически менять цвет Paint
в зависимости от того, какой был выбран RadioButton
. Вот код, который я пробовал:Изменение цвета объекта Paint динамически в Android
String radioButtonSelected = "";
switch (checkedRadioButton) {
case R.id.CheckRed : radioButtonSelected = "Red";
break;
case R.id.CheckBlue : radioButtonSelected = "Blue";
break;
case R.id.CheckWhite : radioButtonSelected = "White";
break;
}
Intent i = new Intent(HandwritingRecognitionOptionTab.this,HandwritingRecognitionCanvas.class);
i.putExtra("setColor",radioButtonSelected);
//startActivity(i); // because I don't want to start the activity immediately after this
В классе Canvas
:
Bundle getValue = getIntent().getExtras();
drawColor = getValue.getString("setColor");
if(drawColor.equals("White"))
intColor = 1;
if(drawColor.equals("Red"))
intColor = 2;
if(drawColor.equals("Blue"))
intColor = 3;
mPaint = new Paint();
mPaint.setDither(true);
mPaint.setColor(Color.WHITE);
if(intColor == 1)
mPaint.setColor(Color.WHITE);
if(intColor == 2)
mPaint.setColor(Color.RED);
if(intColor == 3)
mPaint.setColor(Color.BLUE);
Но я получаю NullPointerException
когда Activity
для Canvas
запускается. Важно отметить, что по умолчанию белый цвет должен быть цветом. Кроме того, это не сохраняет его настойчиво? Должен ли я заглядывать в SharedPreferences?
Если это не точка, из которой вы начинаете второе действие, вы можете поместить соответствующий код из того места, где вы начинаете второе действие. – Deva
Я не запускаю другую деятельность из этой деятельности. У меня возникает ощущение, что я совершенно ошибаюсь в этом подходе, т. Е. Выбирая putExtra(). –