In una delle mie attività sto usando AsyncTask
. In doInBackground()
sto effettuando chiamate a vari metodi. In uno di questi metodi sto ricevendo un'eccezione, quindi nel blocco catch voglio mostrare l'errore nel Toast. So che posso usare Log
, ma preferisco ancora Toast. Quindi, come posso utilizzare Toast in AsyncTask in doInBackground()?Come mostrare il toast in AsyncTask in doInBackground
risposta
Si potrebbe avvolgere il toast in runOnUIThread()
ma questa non è la soluzione migliore.
È necessario impostare un flag booleano nel blocco catch quando si verifica un errore, quindi visualizzare un Toast appropriato in onProgressUpdate()
, onPostExecute()
o uno qualsiasi degli altri metodi con accesso all'interfaccia utente ogniqualvolta il flag è true
.
Non capisco che ... + l'ho fatto +1 – Ahmad
@Ahmad Ho restituito il favore, visto che dopotutto abbiamo ragione. – Sam
Quale contesto deve essere passato per brindare ** getBaseContext() ** o ** getApplication() ** Contesto? – hrishikesh
È possibile visualizzarlo in un metodo, che ha accesso al thread UI come onPreExecute()
, onProgressUpdate()
e onPostExecute()
ritorno da doInBackground come
protected String doInBackground(String... params){
//some code
try{
//some code
}catch(Exception e){
return "Exception Caught";
}
return someValidResult;
}
protected void onPostExecute(String result){
if(result.equalsIgnoreCase("Exception Caught")){
//Display Toast
}else{
// // whatever you wana do with valid result
}
}
scrivere il seguente codice in cui si deve mostrare brindisi in doInBackground()
metodo
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "Example for Toast", Toast.LENGTH_SHORT).show();
}
});
- BTW: se si utilizza
Fragments
, è necessario chiamarerunOnUiThread(...)
attraverso la vostra attività: metodo
getActivity().runOnUiThread(...)
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "Example for Toast", Toast.LENGTH_SHORT).show();
}
});
sta lavorando benissimo per mostrare brindisi in doInBackground()
Creare un oggetto gestore ed esegui tutti i tuoi messaggi Toast usando quello.
@Override
protected Void doInBackground(Void... params) {
Handler handler=new handler();
handler= new Handler(context.getMainLooper());
handler.post(new Runnable(){
public void run(){
Toast.makeText(context, "Created a server socket",Toast.LENGTH_LONG).show();
}
});
}
activity.runOnUiThread(new Runnable() {
public void run()
{
Toast.makeText(activity, "Toast teaxt", Toast.LENGTH_SHORT).show();
}
});
provare questo codice
void showError(final String err) {
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(downloadprogress.this, err + "error in download", Toast.LENGTH_LONG)
.show();
}
});
}
- 1. AsyncTask Android: perché doInBackground() non viene eseguito?
- 2. Parametri doInBackground AsyncTask vs parametri costruttore
- 3. Modifica delle viste in AsyncTask doInBackground() non genera (sempre) l'eccezione
- 4. Android SDK AsyncTask doInBackground non in esecuzione (sottoclasse)
- 5. Il doInBackground di AsyncTask inizia la sua esecuzione troppo tardi dopo che AsyncTask :: execute si chiama
- 6. Asynctask: passa due o più valori da doInBackground a onPostExecute
- 7. Posso annullare il precedente Toast quando voglio mostrare un altro Toast?
- 8. Come personalizzare il toast in Android
- 9. Converti AsyncTask in RxAndroid
- 10. Per forzare l'annullamento AsyncTask non dovrebbe essere volatile la flag periodicamente controllata in doInBackground?
- 11. Come mostrare Toast in una classe estesa da BaseAdapter Ottieni il metodo di visualizzazione
- 12. parallelo in esecuzione AsyncTask
- 13. Android come Toast in Swing
- 14. Android: il metodo doInBackground di Asynctask viene chiamato dopo un lungo ritardo
- 15. Come interrompere il thread asynctask in Android?
- 16. come interrompere il thread ASyncTask in Android
- 17. Toast non visualizzato in UnCaughtExceptionHandler
- 18. Come gestire l'errore AsyncTask
- 19. Come riprodurre AsyncTask da Android in Java codice puro
- 20. È possibile utilizzare il metodo OnPostExcecute in valori AsyncTask RETURN?
- 21. È possibile sincronizzare un asyncTask di Android doInBackground per serializzare l'esecuzione dell'attività?
- 22. implementare AsyncTask in Fragment Android
- 23. Android: chiamata dei metodi sul thread UI dal metodo asyncTask doInBackground
- 24. Come creare un toast in PhoneGap?
- 25. Il contesto Android perde in AsyncTask
- 26. Equivalente Android Toast in iOS
- 27. Equivalente Android toast in JavaFX
- 28. Come visualizzare il toast all'interno del timer?
- 29. ASyncTask che bloccano gli altri
- 30. Android: Notifica personalizzata Toast Eredita Default Toast
perché non si è risintonizzare errore OnPostExecute da doInBackground() e poi così questo errore in un brindisi da OnPostExecute –
non è possibile modificare l'interfaccia utente da il metodo doInBackground(), prova a restituire alcuni risultati e verifica su quel risultato nel metodo onPostExecute(), se lo è, quindi mostra il Toast – Houcine
@Sam: easy man !! non ho votato, ho appena aggiunto il mio commento, so che puoi dare l'accesso in 'doInBackground()', ma non è raccomandato farlo, se è così, allora perché ci sono metodi 'suProgressUpdate () 'e' onPostExecute() '?? – Houcine