thread that not inside has create called android android-asynctask toast looper

inside - can t toast on a thread that has not called looper prepare() android



Cómo hacer un brindis en AsyncTask, se me pide que use el Looper (6)

Puedes tostar dentro de DoInBackground

añade este código donde quieras que aparezca Toast

runOnUiThread(new Runnable() { public void run() { Toast.makeText(<your class name>.this, "Cool Ha?", Toast.LENGTH_SHORT).show(); } });

Tengo tareas completadas por AsyncTask en segundo plano. En algún momento necesito emitir un Toast para que se complete algo.

Lo he intentado y he fallado porque Caused by: java.lang.RuntimeException: Can''t create handler inside thread that has not called Looper.prepare()

¿Cómo puedo hacer eso?


Si desea mostrar el Toast desde el subproceso en segundo plano, tendrá que llamar a runOnUiThread desde doInBackground. No creo que haya otra manera.

Edit: me llevo eso de vuelta. Creo que puedes implementar onProgressUpdate, que se ejecuta en el hilo de la interfaz de usuario, para mostrar el Toast y hacer llamadas a publishProgress desde doInBackground.


Si desea mostrar el Toast en doInBackground, puede usarlo en el método OnPostExecute de AsyncTask.

protected void onPostExecute(String file_url) { Toast.makeText(getApplicationContext(),"Your Message", Toast.LENGTH_LONG).show(); pDialog.dismiss();//dismiss the progress dialouge }


Si desea usar Toast, debe usar este método: 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(); }


También puedes usar el método runOnUiThread para manipular tu IU desde hilos en segundo plano.