次のコードがあります。
public class SomeActivity extends Activity {
Context context;
List<MenuItem> menuItems;
public void importList(View v) {
menuItems = new ArrayList<MenuItem>();
ProgressDialog dialog = ProgressDialog.show(this.context, "TITLE", "MSG");
MyAsyncTask task = new MyAsyncTask(context); // Context is here because I tried to create ProgressDialog inside pre/postExecute, but it doesn't work either
task.execute();
try {
// menuItems = task.get();
} catch(Exception e) {
// : (
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
this.context = this;
}
}
AsyncTask ("menuItems = task.get()") から値を取得する行にコメントを付けると、すべて正常に機能します。しかし、コメントを外すと、タスクが終了した後に ProgressDialog が表示され、値が返されます。何故ですか?
これらのコンテキストと関係があると思います(そのため、 onCreate メソッドを含めました)が、修正方法がわかりません。明らかに、タスクが終了した後ではなく、終了する前に ProgressDialog を表示したいのです。
関連するかどうか不明 - MyAsyncTask は http リクエストといくつかの json 解析を行っています。