Мне нужно изменить цвет пустого ImageView, используя значения шестнадцатеричного цветового кода, хранящиеся в массиве String array, с задержкой, указанной в TransmitFreq. Однако, когда я запускаю код, отображается только первый цвет (соответствующий первому значению массива).Java: изменение цвета фона с задержкой с использованием шестнадцатеричных значений в массиве
Я пробовал три метода, а именно (thread.sleep), таймер обратного отсчета и post.delayed, но без успеха. Я был бы признателен, если бы кто-нибудь мог указать, что я делаю неправильно.
public class Main2Activity extends AppCompatActivity {
String [] transmitArray;
long transmitFreq;
public static int i;
public static View colourView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_main2);
final String transmitArray [] = getIntent().getStringArrayExtra("COLOUR_DATA");
transmitFreq = getIntent().getLongExtra("FREQ_VALUE", 0);
int arrayLength = transmitArray.length;
colourView = findViewById(R.id.colourBox);
/*
//Method 1: Using Countdown timer
new CountDownTimer(transmitFreq*(transmitArray.length), transmitFreq) {
public void onTick(long millisUntilFinished) {
colourView.setBackgroundColor(Color.parseColor(transmitArray[i]));
i++;
}
public void onFinish() {
i=0;
}
}.start();
//Method 2: Using post.delayed
Handler handler = new Handler();
for (i = 0; i < arrayLength ; i++) {
handler.postDelayed(new Runnable() {
@Override
public void run() {
String transmitColour = transmitArray[i];
colourView.setBackgroundColor(Color.parseColor(transmitColour));
}
}, transmitFreq);
}*/
//Method 3: Using thread.sleep
for (i = 0; i < arrayLength ; i++) {
String transmitColour = transmitArray[i];
colourView.setBackgroundColor(Color.parseColor(transmitColour));
try {
Thread.sleep(transmitFreq);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
}
}
Кажется не работает. Я получаю следующую ошибку и сбой приложения. java.lang.NullPointerException: попытка вызвать виртуальный метод 'android.view.Window $ Callback android.view.Window.getCallback()' для ссылки на нулевой объект –