Domanda

Ho compiti completata da AsyncTask in background. Ad un certo punto ho bisogno di emettere un toast che qualcosa è stato completato.

ho provato e ho fallito perché Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

Come posso fare questo?

È stato utile?

Soluzione

OnPostExecute - eseguito sul thread UI o  publishProgress(); nel vostro doinbackground e

protected void onProgressUpdate(Integer... progress) {
}

http://developer.android.com/reference/android/os/ AsyncTask.html

Altri suggerimenti

si può brindare all'interno doInBackground

aggiungere questo codice in cui si desidera Toast comparire

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

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

È inoltre possibile utilizzare runOnUiThread metodo per manipolare l'interfaccia utente dal thread in background.

Se si desidera utilizzare Toast Si consiglia di utilizzare questo metodo: 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(); 
}

Se si desidera visualizzare il Toast dal thread in background che si dovrà chiamare runOnUiThread da doInBackground. Non credo che c'è un altro modo.

Modifica: prendo quella posteriore. Penso che si possa implementare onProgressUpdate, che viene eseguito sul thread dell'interfaccia utente, per mostrare le chiamate Toast e make Per publishProgress da doInBackground.

Se si desidera visualizzare il toast in doInBackground, è possibile utilizzarlo nel metodo OnPostExecute di AsyncTask.

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

   pDialog.dismiss();//dismiss the progress dialouge
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top