2011-02-08 14 views
13

wszyscy. Czytałem na android strony z opisem excute() z AsyncTask:Wiele parametrów wejściowych dla metody execute() AsyncTask

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

Ale w moim projekcie, mam odczytać kodu tak:

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]); 
} 

Ktoś może mi powiedzieć dlaczego są 2 parametry wejściowe dla metody execute()?

Ponieważ zgodnie ze specyfikacją, powinien istnieć tylko jeden parametr wejściowy.

Z góry dziękuję!

Odpowiedz

13

Przeczytaj Params... params jako Params[] params. Możesz wysłać dowolną liczbę params.

+0

w jaki sposób uzyskać dostęp do params [] podczas wywoływania doInBackground()? – Cole

+3

Mam to: przekazywanie wielu doInBackground (String ... params): task.execute (uri, nazwa użytkownika, hasło, itp ...); uzyskiwanie: return Login.getResponseXML (parametry [0], parametry [1], parametry [2] itd.); duh – Cole

45

Oto, jak to zrobić, aby przekazać wiele parametrów. Możesz to zrobić tak, jak opisał Boris, ale co, jeśli przejdziesz różne typy?

Najpierw utwórz swój AsyncTask jako normalne, ale w nim utworzyć konstruktor:

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

Teraz, na razie, czy cokolwiek innego, gdy chcesz inauguracją działania zadzwonić do AsyncTask i przekazać tyle parametrów, ile chcesz.

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

Możesz zobaczyć, że wywołanie "StartTask" i przekazanie parametrów constuctor teraz przypisze zmienne w klasie StartTask.

+0

Interesujące rzeczy, które muszę powiedzieć – kirtan403

Powiązane problemy