Заменен ProgressDialog на ProgressBar, не показывает половину времени - PullRequest
0 голосов
/ 16 июня 2020

Название не очень хорошее, но я заменяю 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.

1 Ответ

0 голосов
/ 16 июня 2020

Сначала вам нужно добавить индикатор выполнения в ваш основной макет или макет, который вы хотите, чтобы он отображался

  main.addView(loading);

вы также можете установить параметры макета, если вы sh для редактирования его параметры макета, например позиция

...