1

Android で Async(doInBackground) タスクを実行しています。

タスクの進行状況バーを設定する必要があります。だから私はonPreExecuteでprogressDialogを表示しています、

ProgressDialog.show のシグネチャは Show(Context,Title,message) です

しかし、ここでのコンテキストは何でしょうか?

 @Override
protected void onPreExecute() 
{
    progress = ProgressDialog.show(???, "Loading", "Please Wait");
}
4

6 に答える 6

2

コンテキストをパラメーターとして受け取る AsyncTask のコンストラクターを作成します。

public class async extends AsyncTask<String, Integer, String>{

    private Context context;

    public async(Context context) {
      this.context = context;
     }


    @Override
    protected void onPreExecute() {
     // Manipulate progress bar      
    }

次に、これを使用して実行します

async mTask = new async(context).execute(params);
于 2013-05-15T13:38:58.687 に答える
1

Context は、Asyncktask のような他のクラスではなく、Activity、Service、または Brodcast のみにすることができます。したがって、その AsyncTask クラスを使用している場所にその Activity の Context を配置します。

于 2013-05-15T13:40:05.913 に答える
1
Add this function in your class

   private Context getDialogContext() {
    Context context;
    if (getParent() != null)
        context = getParent();
    else
        context = this;
    return context;
}

In your asynctask use it as follows

  @Override
  protected void onPreExecute() 
  {
    progress = ProgressDialog.show(getDialogContext(), "Loading", "Please Wait");
    }
于 2013-05-15T18:47:55.417 に答える
0

コンテキストとしてのみ使用する場合thisは、Asynctask を Activity クラスを拡張するクラスの内部クラスとして記述する必要があります。次に、コンテキストはアクティビティを拡張するクラスの名前です。それでも、次のようにコンテキストを渡すことをお勧めします。

ClassExtendingActivity.this
于 2013-05-15T13:38:48.977 に答える
-1

次のような現在のアクティビティビュー参照を渡すことができますMainActivity.this

于 2013-05-15T13:37:12.033 に答える