Я делаю приложение для Android, в котором есть какая-то кнопка. Идея заключается в создании теста с вопросом над кнопкой и возможным ответом на кнопки.
Я пытался раскрасить эти кнопки из потока, который не является потоком пользовательского интерфейса, и окраска неэффективна, но программа не выдает никакой ошибки. И это то же самое, запустив поток пользовательского интерфейса.
public void discoverAnswer(final String rep){
this.sleeping = true;
Log.d(TAG, "discoverReponse: step1");
btn1.setBackgroundColor(btn1.getText().toString().equals(rep) ? Color.GREEN:Color.RED);
btn2.setBackgroundColor(btn2.getText().toString().equals(rep) ? Color.GREEN:Color.RED);
btn3.setBackgroundColor(btn3.getText().toString().equals(rep) ? Color.GREEN:Color.RED);
btn4.setBackgroundColor(btn4.getText().toString().equals(rep) ? Color.GREEN:Color.RED);
Log.d(TAG, "discoverReponse step2");
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.d(TAG, "discoverReponse: step3");
btn1.setBackgroundColor(btn1.getText().toString().equals(rep) ? Color.GREEN:Color.RED);
btn2.setBackgroundColor(btn2.getText().toString().equals(rep) ? Color.GREEN:Color.RED);
btn3.setBackgroundColor(btn3.getText().toString().equals(rep) ? Color.GREEN:Color.RED);
btn4.setBackgroundColor(btn4.getText().toString().equals(rep) ? Color.GREEN:Color.RED);
Log.d(TAG, "discoverReponse step4");
}
});
}
На данный момент я получил все ожидаемые результаты (шаги 1-4), но кнопка не стала ни красной, ни зеленой.