In einer meiner Aktivitäten verwende ich AsyncTask
. In doInBackground()
mache ich Anrufe zu verschiedenen Methoden. Bei einer dieser Methoden bekomme ich eine Ausnahme, also im Catch-Block möchte ich den Fehler im Toast anzeigen. Ich weiß, ich kann Log
verwenden, aber immer noch bevorzuge ich Toast. Also, wie kann ich Toast in AsyncTask in doInBackground() verwenden?Toast in AsyncTask in doInBackground anzeigen
Antwort
Sie könnten den Toast in runOnUIThread()
wickeln, aber das ist nicht die beste Lösung.
Sie sollten ein boolesches Flag im catch-Block setzen, wenn ein Fehler auftritt, und dann einen geeigneten Toast in onProgressUpdate()
, onPostExecute()
oder einer der anderen Methoden mit UI-Zugriff anzeigen, wenn das Flag true
ist.
Ich verstehe das auch nicht ... + 1'ed es – Ahmad
@Ahmad Ich kehrte den Gefallen zurück, da wir doch recht haben. – Sam
Welcher Kontext sollte an toast ** getBaseContext() ** oder ** getApplication() ** Context übergeben werden? – hrishikesh
Sie können es in einem Verfahren zeigen, dass onPreExecute()
, wie onProgressUpdate()
und onPostExecute()
Rückkehr aus doInBackground als
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
}
}
Schreiben Sie den folgenden Code, wo Sie Toast Zugriff auf die UI-Thread hat zeigen müssen in doInBackground()
Methode
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "Example for Toast", Toast.LENGTH_SHORT).show();
}
});
- BTW: Wenn Sie
Fragments
verwenden, müssen SierunOnUiThread(...)
durch Ihre Aktivitäten nennen:
getActivity().runOnUiThread(...)
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "Example for Toast", Toast.LENGTH_SHORT).show();
}
});
arbeitet völlig in Ordnung, Toast Show in doInBackground() -Methode
a Erstellen Handler-Objekt und führen Sie alle Ihre Toast-Nachrichten mit diesem.
@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();
}
});
versuchen diesen Code
void showError(final String err) {
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(downloadprogress.this, err + "error in download", Toast.LENGTH_LONG)
.show();
}
});
}
- 1. mehr Werte Pass in doInBackground AsyncTask Android
- 2. erhalten EditText Wert in doInBackground AsyncTask
- 3. AsyncTask doinBackground wird nicht ausgeführt
- 4. AsyncTask doInBackground() gibt Null zurück
- 5. AsyncTask doInBackground Parameter vs Konstruktor Parameter
- 6. Text in Toast auswählbar anzeigen
- 7. Fehler beim Ausführen doInBackground() Android AsyncTask Fehler
- 8. Warum konnte onPostExecute vor doInBackground in AsyncTask ausgeführt werden?
- 9. Anzeigen von Toast-Nachrichten
- 10. Bild in Listview mit AsyncTask anzeigen
- 11. Android Studio Debug für doInBackground Code einer AsyncTask
- 12. AsyncTask isCancelled() gibt true zurück aber doInBackground endet nicht
- 13. Android: Asynctask DoInBackground Methode wird nach einer langen Verzögerung
- 14. AsyncTask onPost Execute läuft, aber DoInBackground ist nicht
- 15. Asynctask: zwei oder mehr Werte von doInBackground an onPostExecute übergeben
- 16. AsyncTask DoInBackground Herunterladen von Google Spreadsheets Data Returning Null?
- 17. ProgressDialog in einer AsyncTask, NullPointerException
- 18. AsyncTask's doInBackground startet seine Ausführung zu spät, nachdem AsyncTask :: execute
- 19. Android AsyncTask in einem anderen AsyncTask
- 20. UI-Task in doinbackground() in Android ausführen
- 21. doInbackground von asyncktask nicht
- 22. Wie AsyncTask korrekt in Android
- 23. AsyncTask in Android?
- 24. Anzeigen einer Toast-Nachricht aus der Anwendungsklasse
- 25. Eine Windows 10 Toast-Benachrichtigung anzeigen
- 26. Anzeigen einer Toast-Benachrichtigung von einem Dienst
- 27. Toast-Nachricht von benutzerdefinierter Variable anzeigen
- 28. Versuch, eine virtuelle Methode beim Anzeigen von TOAST aufzurufen?
- 29. Geben Sie mehrere Werte aus AsyncTask/doInBackground zurück und verwenden Sie sie in einer anderen Methode
- 30. Ändern von Ansichten in AsyncTask doInBackground() löst nicht (immer) Ausnahme aus
, warum Sie nicht Fehler OnPostExecute von doInBackground sind Neuabstimmung() und dann so dieser Fehler in einem Toast von OnPostExecute –
Sie die Benutzeroberfläche nicht ändern können aus die doInBackground() -Methode, versuchen Sie, einige Ergebnisse zurückgeben, und testen Sie auf dieses Ergebnis in der onPostExecute() -Methode, wenn dies der Fall ist, so zeigen Sie die Toast – Houcine
@Sam: easy man !! Ich habe nicht gewählt, ich habe gerade meinen Kommentar hinzugefügt, ich weiß, dass Sie Zugriff in 'doInBackground()' geben können, aber es ist nicht empfehlenswert, das zu tun, wenn ja, warum gibt es Methoden 'onProgressUpdate () 'und' onPostExecute() '?? – Houcine