SetText по фиксированной ставке - PullRequest
0 голосов
/ 26 марта 2012

Я хочу SetText в fixedRate с задержкой отправки обработчика, но я не могу этого сделать, потому что я получаю ошибку, что не могу изменить текст в потоке, отличном от основного потока.

У меня есть статический текст, хранящийся в другом классе, который изменяет его, и я хочу установить текст TextView для этого текста каждые 100 миллисекунд.

Как я могу решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 26 марта 2012

Расписание таймера для выполнения задачи ..

private static class UpdateText extends TimerTask {
            private final TextView tv;

            public UpdateText(TextView tv) {
                this.tv = tv;
            }

            @Override
            public void run() {
                tv.post(new Runnable() {

                    public void run() {
                        tv.setText(tv.getText() + "Append here");
                    }
                });
            }

В onCreate сделать это

tv.setText("Append here");
        setContentView(tv);

        Timer timing = new Timer();
        timing.schedule(new UpdateText(tv), 3000, 3000);
0 голосов
/ 26 марта 2012

В Android вы должны манипулировать элементами пользовательского интерфейса только в потоке пользовательского интерфейса. Вы можете использовать asynctask, hander или runOnUiThread для достижения этой цели. Последнее самое простое:

runOnUiThread(new Runnable() {
    public void run() {
        textview.setText("some text");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...