【发布时间】:2020-04-01 19:19:04
【问题描述】:
我有一些代码(最后包含完整的方法),其中包括一个进度对话框。 问题是进度对话框没有显示任何进度(它没有从 0 移动到 100),它保持为零,没有移动,直到代码完成然后消失。所以它在正确的时间出现并在正确的时间被解雇,但它没有显示两者之间的进度。
这是我尝试增加对话框的部分。 intProgress 变量正在工作,我可以在日志中看到它从 0 递增到 100,那么为什么不会在进度对话框中显示呢?
for(Animal animal : lstAnimals) {
i = i + 1;
animal.addToSqlLite(strTableName, animal, sqLiteDatabase);
int intProgress = (int) (((double) (i) / (double) lstAnimals.size()) * 100);
Log.d(TAG, "vvvv: " + "i = " + i + " total = " + lstAnimals.size() + " prog = " + intProgress);
progressDialog.setProgress(intProgress);
}
这里有完整的方法:
// fetches data from the server and copies it across to the sqlite database
public void fetchDataFromServerAndAddToSqlLite(ProgressBar progressBar, String strTableName, SQLiteDatabase sqLiteDatabase, Context context) {
// progressBar.setVisibility(View.VISIBLE);
ProgressDialog progressDialog = new ProgressDialog(context);
progressDialog.setTitle("Wildgoosechase");
progressDialog.setMessage("Downloading Animals...");
progressDialog.setProgressStyle(progressDialog.STYLE_HORIZONTAL);
progressDialog.setCancelable(false);
progressDialog.setMax(100);
progressDialog.setProgress(0);
progressDialog.show();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://xxxxxxxxxxxx.co.za/")
.addConverterFactory(GsonConverterFactory.create())
.build();
wildgoosechaseAPI myWildGooseChaseApi = retrofit.create(wildgoosechaseAPI.class);
retrofit2.Call<List<Animal>> call = myWildGooseChaseApi.getAnimals();
call.enqueue(new Callback<List<Animal>>() {
@Override
public void onResponse(Call<List<Animal>> call, Response<List<Animal>> response) {
if(!response.isSuccessful()){
// progressBar.setVisibility(View.GONE);
progressDialog.dismiss();
}
List<Animal> lstAnimals = response.body();
int i = 0;
for(Animal animal : lstAnimals) {
i = i + 1;
animal.addToSqlLite(strTableName, animal, sqLiteDatabase);
int intProgress = (int) (((double) (i) / (double) lstAnimals.size()) * 100);
Log.d(TAG, "vvvv: " + "i = " + i + " total = " + lstAnimals.size() + " prog = " + intProgress);
progressDialog.setProgress(intProgress);
}
// progressBar.setVisibility(View.GONE);
progressDialog.dismiss();
}
@Override
public void onFailure(Call<List<Animal>> call, Throwable t) {
// progressBar.setVisibility(View.GONE);
progressDialog.dismiss();
}
});
}
【问题讨论】:
标签: android-studio progressdialog