2011-02-08 2 views
13

everyone。私はアンドロイドのサイトでAsyncTaskのexcute()の説明を読んでいる:メソッドの複数の入力パラメータ、AsyncTaskのexecute()

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

をしかし、私のプロジェクトの中に、私はこのようなコードを読んでいる:

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

誰かが私に言うことができるがなぜ2入力パラメータの場合execute()メソッド?

仕様によると、1つの入力パラメータしかないはずです。

ありがとうございます!

答えて

13

Params... paramsParams[] paramsとしてください。あなたはあなたが望むように多くのパラメーターを送ることができます。

+0

doInBackground()を呼び出すとき、Params []パラメータにどのようにアクセスしますか? – Cole

+3

入手: 複数のdoInBackground(String ... params)を渡す: task.execute(uri、username、password、etc ...); get: Login.getResponseXML(params [0]、params [1]、params [2]など); duh – Cole

45

ここでは、複数のパラメータを渡す方法を示します。ボリスが述べたようにそれを行うことができますが、異なるタイプを渡すとどうなりますか?

まず、通常どおりAsyncTaskを作成しますが、その中に、コンストラクタを作成します。

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

、あなたのイベントや何か他のものの上に、あなたがあなたのAsyncTaskとパスを呼び出すアクションをキックオフしたいとき必要なだけ多くのパラメータを設定します。

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

「StartTask」を呼び出してconstuctorパラメータを渡すと、変数がStartTaskクラス内に割り当てられることがわかります。

+0

私が言わなければならない興味深いもの – kirtan403

関連する問題