AsyncTask (メイン アクティビティで開始) を使用してデータをロードしています。
Context context = VehicleTabView.this;
ProgressDialog progressDialog = new ProgressDialog(context);
progressDialog.setMessage("Loading...");
new LoadingVehicles(context, progressDialog).execute(null, null, null);
AsyncClass は次のとおりです。
package com.example.schedule_vehicles;
import com.example.utils.VehicleNames;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
// Showing a ProgressDialog once loading the list of vehicles is completed using an AsyncTask
public class LoadingVehicles extends AsyncTask<Void, Void, Void> {
Context context;
ProgressDialog progressDialog;
public LoadingVehicles(Context context, ProgressDialog progressDialog) {
this.context = context;
this.progressDialog = progressDialog;
}
@Override
protected void onPreExecute() {
progressDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
new VehicleNames(context);
return null;
}
@Override
protected void onPostExecute(Void result) {
progressDialog.dismiss();
}
}
ProgressDialog が画面に表示されない問題。
Log.d と入力して、プログラムが onPreExecute、doInBackground、onPostExecute のすべてのフェーズを通過しているかどうかを確認します。プログラムはすべてのフェーズを通過し、必要なジョブを実行しています。しかし、ProgressDialog は表示されません。このことについて多くの情報を読みましたが、DOINBACKGROUND メソッドによってブロックされているメイン スレッドによって PRE および POST 実行が開始されているようです。これが ProgressDialog を表示しない理由です。これがどのように解決されるのか、いくつかの答えを見つけようとしましたが、成功しませんでした。
誰かがこれに直面した場合は、あなたの経験を共有してください。どうもありがとう!