[Android] Как показать тост в AsyncTask в doInBackground


Answers

вернуться из doInBackground как

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
    }
}
Question

В одном из моих действий я использую AsyncTask . В doInBackground() я doInBackground() на различные методы. В одном из этих методов я получаю исключение, поэтому в блоке catch я хочу показать ошибку в Toast. Я знаю, что могу использовать Log , но все же предпочитаю Toast. Итак, как я могу использовать Toast в AsyncTask в doInBackground ()?




попробуйте этот код

void showError(final String err) {
    runOnUiThread(new Runnable() {
        public void run() {
            Toast.makeText(downloadprogress.this, err + "error in download", Toast.LENGTH_LONG)
                    .show();
        }
    });
  }



runOnUiThread(new Runnable() {

public void run() {

  Toast.makeText(getApplicationContext(), "Example for Toast", Toast.LENGTH_SHORT).show();

   }
}); 

работает отлично, чтобы показать тост в doInBackground ()




Создайте объект-обработчик и выполните все ваши сообщения Toast, используя это.

@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(); 
        }
    });
  }