W jednej z moich aktywności używam AsyncTask
. W doInBackground()
dzwonię do różnych metod. W jednej z tych metod otrzymuję wyjątek, więc w bloku catch chcę pokazać błąd w Toast. Wiem, że mogę używać Log
, ale nadal wolę Toast. Więc, w jaki sposób mogę użyć Toast w AsyncTask w doInBackground()?Jak wyświetlić toast w AsyncTask na stronie doInBackground
Odpowiedz
Można owinąć tosty w runOnUIThread()
, ale nie jest to najlepsze rozwiązanie.
Należy ustawić flagę boolowską w bloku catch, gdy wystąpi błąd, a następnie wyświetlić odpowiednią toast za onProgressUpdate()
, onPostExecute()
lub dowolną z innych metod z dostępem do interfejsu użytkownika, gdy flaga jest true
.
Nie rozumiem, że ... + 1'ed to – Ahmad
@Ahmad Oddałem przysługę, ponieważ mamy przecież rację. – Sam
Który kontekst należy przekazać na toast ** getBaseContext() ** lub ** getApplication() ** Kontekst? – hrishikesh
można wyświetlać go w sposób, który ma dostęp do wątku UI jak onPreExecute()
, onProgressUpdate()
i onPostExecute()
powrocie z doInBackground jako
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
}
}
napisać następujący kod gdzie trzeba pokazać tosty w doInBackground()
metodą
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "Example for Toast", Toast.LENGTH_SHORT).show();
}
});
- BTW: jeśli używasz
Fragments
, trzeba zadzwonićrunOnUiThread(...)
dzięki swojej aktywności: Metoda
getActivity().runOnUiThread(...)
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "Example for Toast", Toast.LENGTH_SHORT).show();
}
});
działa perfekcyjnie pokazać toast doInBackground()
Tworzenie obiekt obsługi i wykonać wszystkie wiadomości Toast za pomocą tego.
@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();
}
});
wypróbować ten kod
void showError(final String err) {
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(downloadprogress.this, err + "error in download", Toast.LENGTH_LONG)
.show();
}
});
}
- 1. Parametry AsyncTask doInBackground a parametry konstruktora
- 2. Android AsyncTask - dlaczego nie wykonano metody doInBackground()?
- 3. Jak wyświetlić Toast na środku ekranu
- 4. Android: Wywoływanie metod na wątku UI z metodą AsyncTask doInBackground
- 5. Narzędzie do debugowania Android Studio dla kodu doInBackground zestawu AsyncTask
- 6. Asynctask: przekazanie dwóch lub więcej wartości z doInBackground do onPostExecute
- 7. Jak wyświetlić md-toast z kolorem tła?
- 8. Android: Metoda doInBackground Asynctask jest wywoływana po długim opóźnieniu
- 9. Jak wyświetlić toast wewnątrz uchwytów/wątku?
- 10. Jak przekazać kontekst do AsyncTask?
- 11. Jak wyświetlić lokalny obraz na stronie internetowej?
- 12. Android AsyncTask zwraca wiele wartości w doInBackground do użycia w onPostExecute
- 13. android.os.NetworkOnMainThreadException w AsyncTask
- 14. Jak wyświetlić komunikat toast z klasy, że nie rozciąga aktywny
- 15. Czy Android AsyncTask doInBackground może być zsynchronizowany w celu serializacji wykonania zadania?
- 16. Jak wyświetlić dane z wielu tabel na stronie w MVC?
- 17. Jak mogę pobrać dane z AsyncTasks doInBackground()?
- 18. Wypełnianie listView w/AsyncTask
- 19. Chcę wyświetlić wersję git na mojej stronie
- 20. Jak dostosować toast w Androidzie
- 21. getApplicationContext w klasie AsyncTask?
- 22. Jak mogę wyświetlić NEWS na stronie pomocy html pakietu R?
- 23. Rstudio Shiny Jak wyświetlić wersję serwera Shiny na stronie Shiny?
- 24. Jak wyświetlić wiadomość o twarzy na przekierowanej stronie
- 25. Android AsyncTask wewnątrz AsyncTask
- 26. Jak wyświetlić odtwarzacz wideo typu youtube na stronie internetowej?
- 27. PHP: Jak wyświetlić zawartość pliku tekstowego na mojej stronie?
- 28. Jak wyświetlić czas UTC jako czas lokalny na stronie internetowej?
- 29. wordpress: Jak wyświetlić wiele stron na jednej stronie?
- 30. Jak wyświetlić tabelę bazy danych na stronie JSP
dlaczego nie przestrajania błąd do onPostExecute z doInBackground(), a następnie tak ten błąd w toast z onPostExecute –
nie można modyfikować interfejs użytkownika z metoda doInBackground(), spróbuj zwrócić niektóre wyniki i przetestuj na tym wyniku metodę onPostExecute(), jeśli tak, to pokaż Toast – Houcine
@Sam: easy man !! nie przegłosowałem, właśnie dodałem mój komentarz, wiem, że możesz dać dostęp w 'doInBackground()', ale nie jest to zalecane, jeśli tak, to dlaczego istnieją metody 'onProgressUpdate () 'i' onPostExecute() '?? – Houcine