Как показывать сообщения Toast из потока в другом классе

Я разрабатываю приложение, и мне нужно показать сообщение Toast из потока, который работает в другом классе. Я читал про runOnUiThread, но он не работает.. В основной активности есть вызов другого java-класса, и здесь есть соединение с веб-сервером, и я обрабатываю сообщения Http с сервера. Здесь, если я получил 204 сообщения, мне нужно показать тост. Как я могу реализовать runOnUiThread?

Спасибо

2 ответа

Решение

Передайте ссылку своей деятельности на этот рабочий класс и вызовите runOnUiThread следующим образом

 activity.runOnUiThread(new Runnable() {
    public void run() {
        Toast.makeText(activity, "Your Message here", Toast.LENGTH_SHORT).show();
    }
});

Я предлагаю вам использовать библиотеку Retrofit. Он обрабатывает все нити для вас, и вам не нужно заново изобретать колесо.

//make request in ui thread
yourService.getMyData().enqueue(new Callback<YourResponse>() {

    @Override
    public void onResponse(Response<YourResponse> response) {
        //handle responses in ui thread
        if (response.isSuccess()) {
           //Toast.makeText()..

        } else {
            //error
        }
    }

    @Override
    public void onFailure(Throwable t) {
       //toast the error
    } 

});

Красиво, правда?

Другие вопросы по тегам