Я пытаюсь реализовать поток, который что-то меняет в пользовательском интерфейсе в Fragment
.Поэтому мне нужно обратиться к основной теме.Основываясь на моих исследованиях, я обнаружил, что следующий код должен справиться с задачей:
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
Toast.makeText(menuActivity, "HELLO", Toast.LENGTH_SHORT).show();
}
});
Это будет выполняться только один раз, даже если Looper
обычно должен поддерживать поток живым.Попытка вызвать Looper.prepare()
внутри Handler
приведет к RuntimeException
, так как только один Looper
разрешен для каждого потока. Редактировать: Моя цель - постоянно обновлять TextView каждую секунду.
Я также попробовал следующее:
Thread t = new Thread() {
@Override
public void run() {
menuActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
System.out.println("-----------TEST");
}
});
}
};
t.start();
Но это будет выполняться только один раз.
Я также прочитал эту статью , но я думаю, что мой первый фрагмент кода - это просто более короткая версия кода, показанного в статье.
Где мойошибка в каком-либо из этих фрагментов кода?
Этот вопрос не является дубликатом из-за того, что я представил совершенно другой фрагмент кода, который является основой проблемы, с которой я столкнулся.Кроме того, Looper более подробно объясняется в этой теме.