gpt4 book ai didi

java - 用ProgressBar替换ProgressDialog,一半时间不显示

转载 作者:行者123 更新时间:2023-12-01 16:15:23 25 4
gpt4 key购买 nike

标题不太好,但我正在 Android 应用程序中用 ProgressBar 替换 ProgressDialog 。在我的 ProjectsFragment 类中实现它后,我运行该应用程序,并在应用程序从我的数据库加载数据时看到默认的 ProgressBar 加载。这很好用。然后,我替换了 ProjectViewActivity 中的 ProgressDialog,并且不再显示任何 ProgressBars。我无法判断它们是否有效,只是没有显示,或者我是否通过将 ProgressBar 添加到父 Activity 而破坏了它。我的另一个想法是,也许应用程序已经缓存了数据,并且加载速度太快,以至于 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 中没有显示任何错误。

最佳答案

您首先需要将进度条添加到您的主布局或您希望它出现的布局中

  main.addView(loading);

如果您想编辑其布局参数(例如位置),您还可以设置布局参数

关于java - 用ProgressBar替换ProgressDialog,一半时间不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62407994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com