ボタンがあり、それをクリックすると、他のアクティビティが読み込まれます。これを作成すると、スピナーにWebサービスからのデータを入力するメソッドが呼び出されます。
このボタンをクリックすると、画面が「フリーズ」したままになり、アクティビティが表示されます。そのため、ユーザーに進行状況ダイアログを表示し、Webサービスが返されたら、進行状況ダイアログを終了するのは良いことだと思いました。
Handlerを使用しようとしましたが、AsyncTaskを使用しようとしていますが、Webサービスが呼び出される前にプログラムがスピナーをいっぱいにしているため、NullPointerExceptionが発生します。
private void fillSpinner(){
//runWebService();
new CallWebServiceAsyncTask().execute(null);
mAdapter = new PlanesAdapter(this, allPlanes);
mList.setAdapter(mAdapter);
}
class CallWebServiceAsyncTask extends AsyncTask<Void, Void, Void> {
private ProgressDialog progressDialog;
@Override
protected void onPreExecute() {
progressDialog = new ProgressDialog(PlanesActivity.this);
progressDialog.setMessage("Loading...");
progressDialog.show();
}
@Override
protected Void doInBackground(Void... v) {
runWebService();
return null;
}
@Override
protected void onPostExecute(Void result) {
progressDialog.dismiss();
}
}