Подтвердить что ты не робот

Как поднять тост в AsyncTask, мне предлагается использовать Looper

У меня есть задачи, выполненные AsyncTask в фоновом режиме. В какой-то момент мне нужно выпустить тост, чтобы что-то было завершено.

Я пробовал, и я потерпел неудачу, потому что Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

Как я могу это сделать?

4b9b3361

Ответ 2

Вы также можете использовать runOnUiThread, чтобы управлять своим пользовательским интерфейсом из фоновых потоков.

Ответ 3

вы можете Toast внутри doInBackground

добавьте этот код, в котором вы хотите видеть тосты

runOnUiThread(new Runnable() {
public void run() {

    Toast.makeText(<your class name>.this, "Cool Ha?", Toast.LENGTH_SHORT).show();
    }
});

Ответ 4

Если вы хотите использовать Toast Вы должны использовать этот метод: onProgressUpdate()

protected Integer doInBackground(Void...Params) {
   int check_point = 1;
   publishProgress(check_point);
   return check_point;
}

protected void onProgressUpdate(Integer integers) {
  if(integers == 1) {
    Toast.makeText(classname.this, "Text", 0).show(); 
}

Ответ 5

Если вы хотите отобразить Toast из фонового потока, вам придется вызывать runOnUiThread из doInBackground. Я не верю туда другим способом.

Изменить: я забираю это. Я думаю, вы можете реализовать onProgressUpdate, который работает в потоке пользовательского интерфейса, чтобы показать Toast и сделать вызовы publishProgress из doInBackground.

Ответ 6

Если вы хотите отобразить Toast в doInBackground, вы можете использовать его в методе OnPostExecute AsyncTask.

protected void onPostExecute(String file_url) {    
   Toast.makeText(getApplicationContext(),"Your Message", Toast.LENGTH_LONG).show();

   pDialog.dismiss();//dismiss the progress dialouge
}