Название не очень хорошее, но я заменяю ProgressDialog
на ProgressBar
в моем приложении android. После его реализации в моем классе ProjectsFragment
я запускаю приложение и вижу загрузку ProgressBar
по умолчанию, пока приложение загружает данные из моей базы данных. Это прекрасно работает. Затем я заменяю ProgressDialog
на ProjectViewActivity
и больше не показываю ProgressBars
. Я не могу сказать, работают ли они, и они просто не отображаются, или я сломал его, добавив ProgressBar
к родительской активности. Другая моя мысль заключалась в том, что, возможно, приложение кэшировало данные и оно загружается так быстро, что ProgressBar
даже не появляется, но после удаления кеша и всех данных приложения оно все равно не отображается.
Вот мой код из класса ProjectsFragment
, в котором он работал:
loading = new ProgressBar(getActivity());
public void loadProjects() {
loading.setVisibility(View.VISIBLE);
db.collection("users").document(user.getUid()).collection("projects").get() //Get all projects from selected user
.addOnSuccessListener(new OnSuccessListener < QuerySnapshot > () {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
projects.clear(); //Clear before reloading
for (QueryDocumentSnapshot documentSnapshot: queryDocumentSnapshots) {
projects.add(documentSnapshot.toObject(ProjectItem.class));
}
refreshRecycler();
}
});
}
public void refreshRecycler() {
adapter = new DashboardProjectAdapter(projects, getContext()); //Create adapter with list of projects
recyclerView.setAdapter(adapter); //Assign adapter to recycler view
adapter.setOnItemClickListener(new DashboardProjectAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position) {
String projectID;
projectID = projects.get(position).getProjectID();
String projectName;
projectName = projects.get(position).getProjectName();
Intent openProjectView = new Intent(getActivity().getApplicationContext(), ProjectViewActivity.class); //?
openProjectView.putExtra("projectID", projectID);
openProjectView.putExtra("projectName", projectName);
startActivity(openProjectView);
}
});
loading.setVisibility(View.GONE);
Вот мой код из ProjectViewActivity
, где я запускал его дважды, а потом он нигде не показывает (извините за длину кода добавил, я просто не уверен, где я ошибся):
ProgressBar loading;
public void loadTasks() {
loading.setVisibility(View.VISIBLE);
//Get tasks from database and load into ArrayList
db.collection("users").document(user.getUid()).collection("projects").document(projectID).collection("tasks").get()
.addOnSuccessListener(new OnSuccessListener < QuerySnapshot > () {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
//Clear list
allTasks.clear();
for (QueryDocumentSnapshot documentSnapshot: queryDocumentSnapshots) {
allTasks.add(documentSnapshot.toObject(TaskItem.class));
}
//Clear lists
tasksToDo.clear();
tasksInProgress.clear();
tasksInReview.clear();
tasksComplete.clear();
//Sort tasks into respective lists
for (TaskItem task: allTasks) {
switch (task.getStatus()) {
case 0:
tasksToDo.add(task);
break;
case 1:
tasksInProgress.add(task);
break;
case 2:
tasksInReview.add(task);
break;
case 3:
tasksComplete.add(task);
break;
default:
Toast.makeText(ProjectViewActivity.this, "A database error has occurred, please contact a Developer", Toast.LENGTH_LONG).show();
}
}
setupAdapters();
loading.setVisibility(View.GONE);
displayToDo();
}
});
}
//This is the method called from the ProjectReviewViewAdapter after a tasked is marked complete
public void loadTasksReview() {
loading.setVisibility(View.VISIBLE);
//Get tasks from database and load into ArrayList
db.collection("users").document(user.getUid()).collection("projects").document(projectID).collection("tasks").get()
.addOnSuccessListener(new OnSuccessListener < QuerySnapshot > () {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
//Clear list
allTasks.clear();
for (QueryDocumentSnapshot documentSnapshot: queryDocumentSnapshots) {
allTasks.add(documentSnapshot.toObject(TaskItem.class));
}
//Clear lists
tasksToDo.clear();
tasksInProgress.clear();
tasksInReview.clear();
tasksComplete.clear();
//Sort tasks into respective lists
for (TaskItem task: allTasks) {
switch (task.getStatus()) {
case 0:
tasksToDo.add(task);
break;
case 1:
tasksInProgress.add(task);
break;
case 2:
tasksInReview.add(task);
break;
case 3:
tasksComplete.add(task);
break;
default:
Toast.makeText(ProjectViewActivity.this, "A database error has occurred, please contact a Developer", Toast.LENGTH_LONG).show();
}
}
setupAdapters();
loading.setVisibility(View.GONE);
Snackbar snackbar = Snackbar.make(layout, "Task accepted and moved to complete.", Snackbar.LENGTH_LONG);
snackbar.show();
displayForReview();
}
});
Любая помощь приветствуется, я могу объяснить любой шаг моего кода, если вам нужно. Опять же, он не показывает ошибок в Android Studio.