2011-02-08 13 views
13

todos. He leído en el sitio androide de la descripción de la Excute() de AsyncTask:Parámetros de entrada múltiples para el método execute() de AsyncTask

public final AsyncTask<Params, Progress, Result> execute (Params... params)

Pero dentro de mi proyecto, he leído el código de la siguiente manera:

private static final int JSON = 0; 
private static final int NAME = 1; 
@Override 
protected String doInBackground(String... strData) {  
     FileOutputTask task = new FileOutputTask(context); 
     task.execute(strData[JSON], strData[NAME]); 
} 

Alguien me puede decir ¿Por qué hay 2 parámetros de entrada para el método execute()?

Dado que, según la especificación, no debe haber sólo un parámetro de entrada.

¡Gracias de antemano!

Respuesta

13

Lea Params... params como Params[] params. Puede enviar tantos params como desee.

+0

¿cómo se accede a los params [] params al invocar doInBackground()? – Cole

+3

lo consiguió: pasando múltiples doInBackground (String ... params): task.execute (uri, nombre de usuario, contraseña, etc ...); conseguir: retorno Login.getResponseXML (params [0], params [1], params [2], etc ...); duh – Cole

45

Así es como logré pasar múltiples parámetros. Podrías hacerlo como lo describió Boris, pero ¿y si pasas diferentes tipos?

En primer lugar, crear su AsyncTask como normal, pero dentro de ella, crear un constructor:

private class StartTask extends AsyncTask<Context, Void, Boolean> 
    { 
     private ProgressDialog progress; 
     private String strAction=""; 

     public StartTask(ProgressDialog progress, String Action) 
     { 
      this.progress = progress; 
      this.strAction = Action; 
     } 
    } 

Ahora, en su caso, o cualquier otra cosa, cuando se quiere poner en marcha la acción de llamar a su AsyncTask y pase tantos parámetros como quieras

ProgressDialog progress = new ProgressDialog(this); 
    progress.setMessage("Loading..."); 
    String strAction = "this_is_a_string"; 
    new StartTask(progress, strAction).execute(this); 

Se puede ver que llamar "startTask" y pasando los parámetros Constuctor ahora asignar las variables dentro de la clase startTask.

+0

Cosas interesantes que debo decir – kirtan403

Cuestiones relacionadas