Alzar un brindis desde AsyncTask

Estoy tratando de levantar una tostada de asynctask, pero estoy teniendo problemas para conseguir mis parámetros correctos. Estoy brindando de onProgressUpdate, así que estoy en el hilo de interfaz de usuario, que creo que es correcto. Creo que me estoy equivocando con el parámetro de contexto, ¿qué debo pasar como un valor?

EDIT: Mostrando código abajo

@Override protected void onProgressUpdate(String... strings){ Toast toast = Toast.makeText(MainActivity.this, strings[0], Toast.LENGTH_LONG); toast.show(); } 

MainActivity.this está diciendo "Ninguna instancia de inclusión del tipo MainActivity es accesible en alcance." No estoy seguro de qué pasar como un contexto en su lugar.

Gracias

Obtenga el objeto Context llamando a getApplicationContext() de MainActivity y pasarlo como un parámetro a su AsyncTask . Como EboMike ha señalado, MainActivity.this sólo funcionaría si su AsyncTask era una clase interna.

Si no es una clase interna declarada en el punto de uso, entonces MainActivity.this es probable que esté fuera del alcance. La única manera de solucionar el problema es subclasificar AsyncTask y cambiar el constructor para aceptar una variable de contexto para que pueda establecerla en su clase personalizada y utilizarla de métodos. Usar getApplicationContext podría funcionar tan bien pero no estoy seguro de cómo se comportará.

No puede hacer esto en onProgressUpdate() . Al menos no de esta manera. Si Eclipse le da este error, es porque MainActivity.this es irresoluble para él. ¿Por qué? Porque no está en el subproceso de interfaz de usuario, por lo que lo que hace no es seguro para subprocesos, porque no debe tener acceso a la interfaz de usuario desde otro subproceso.

En primer lugar, y como se dijo antes, debe escribir un constructor teniendo un contexto y guardarlo en una variable global, por lo que es accesible en todas partes dentro de la clase. A continuación, para acceder a la interfaz de usuario de forma segura, utilice uno de los siguientes:

 Activity.runOnUiThread(Runnable) View.post(Runnable) View.postDelayed(Runnable, long) 

Ésos son thread-safe.

Saludos

  • ¿Cómo puedo hacer que un ProgressDialog sea cancelable por el botón de retroceso pero no por un toque de pantalla?
  • OnCreateView () espera que AsyncTask se ejecute?
  • Propósito de los parámetros de varianza de AsyncTask
  • ¿Cómo utilizar SQLite DB de AsyncTask?
  • Patrón de Android AsyncTask / doInBackground
  • ¿Cómo puedo implementar un Timer / TimerTask que ejecuta un AsyncTask? (Androide)
  • Android SDK AsyncTask doInBackground no está en ejecución (subclase)
  • Devolver datos de la clase AsyncTask
  • La tarea asíncrona se detuvo al finalizar la aplicación (onDestroyed se llama)
  • Diferencia real entre AsyncTask y Thread
  • Fragmentos, AsyncTask y Oyentes
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.