TestAsyncTask
が の内部クラスであると仮定するとActivity
、アクティビティ名.this
を使用してコンテキストを取得できます。TestAsyncTask が内部クラスでない場合は、インスタンスをコンストラクターに渡して、メソッドActivity
に として提供できるようにする必要があります。Context
ProgressDialog.show()
以下は、内部クラス メソッドの例です。
class MyActivity extends Activity {
//Activity Lifecycle methods
class TestAsynTask extends AsyncTask<Void, Void, Void> {
ProgressDialog dialog;
@Override
protected void onPreExecute() {
dialog = ProgressDialog.show(MyActivity.this, "title", "message");
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
//very long computation...
return null;
}
@Override
protected void onPostExecute(Void void) {
dialog.cancel();
}
}
}
ProgressDialog
メソッド内のインスタンス変数に保存し、メソッド内でそれonPreExecute()
を呼び出す必要があることに気付くでしょう。cancel()
onPostExecute()
他のアプローチも同様に見えます。
class MyActivity extends Activity {
//Activity Lifecycle methods
}
class TestAsynTask extends AsyncTask<Void, Void, Void> {
ProgressDialog dialog;
MyActivity activity;
TaskAsynTask(MyActivity activity) {
this.activity = activity;
}
@Override
protected void onPreExecute() {
dialog = ProgressDialog.show(activity, "title", "message");
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
//very long computation...
return null;
}
@Override
protected void onPostExecute(Void void) {
dialog.cancel();
}
}