android - 如何为 firebase 中的每个 child 显示警报对话框,其中包含 true

标签 android firebase firebase-realtime-database android-alertdialog

执行完一个练习后,我想显示一个警告对话框,上面写着“你已经执行过了。你确定要再做一次吗?”

所以在我的 firebase 中,一旦练习已经执行,isProgramExerciseFinished 将被设置为 true。但在我的代码中,对话框似乎只有在所有内容都设置为 true 后才会显示。

public void onClick(View view) {
            currentWeek = programTrackers.get(0).getWeek();
            DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("ProgramTracker")
                    .child(GlobalUser.getmUser().getiD())
                    .child(programTrackers.get(0).getProgramId());
            databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    final int childCount = (int) dataSnapshot.getChildrenCount();
                    int count = 0;
                    for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                        ProgramTracker programTracker = snapshot.getValue(ProgramTracker.class);
                        if (programTracker.getProgramExerciseWeek() == currentWeek) {
                            programTrackChecker.add(programTracker);


                        }
                        count++;
                    }
                    if (count == childCount) {
                        boolean isFinished = false;
                        //last iteration
                        for (int i = 0; i < programTrackChecker.size(); i++) {
                            if (programTrackChecker.get(i).isProgramExerciseFinished()) {
                                isFinished = true;
                            } else
                                isFinished = false;
                        }
                        if (isFinished) {
                            AlertDialog.Builder builder = new AlertDialog.Builder(DayExerciseActivity.this);
                            builder.setMessage("You have already completed all exercises. Are you sure you want to do it again?");
                            builder.setPositiveButton("Yes", (dialogInterface, i) -> {
                                startActivity(new Intent(DayExerciseActivity.this, DoProgramActivity.class)
                                        .putExtra("programTrackers", programTrackers)
                                        .putExtra("exerciseNum", String.valueOf(0)));

                            });
                            builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialogInterface, int i) {
                                    dialogInterface.dismiss();
                                }
                            });
                            builder.show();

                        } else
                            startActivity(new Intent(DayExerciseActivity.this, DoProgramActivity.class)
                                    .putExtra("programTrackers", programTrackers)
                                    .putExtra("exerciseNum", String.valueOf(0)));

                    }

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

        }
    });
}

once it is true a dialog will show once it is false dialog will not be shown and automatically will be directed to doProgramActivity 一旦为真,将显示一个对话框,一旦为假,将不显示对话框,并自动定向到 doProgramActivity

最佳答案

我相信您只会从 firebase 返回一次数据。由于回调函数是异步调用的。因此,在它被调用时,postsRef.on(...) 已经返回,紧随其后的任何代码都将运行。引用以下问题: Firebase on() does not return anything

关于android - 如何为 firebase 中的每个 child 显示警报对话框,其中包含 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56338384/

相关文章:

ios - 检查 child 会导致可扩展性差吗?

android - getColumnIndex(_ID) 返回零,getlong(getColumnIndex(_ID)) = 正确值

android - 编译时遇到错误 - IncompatibleClassChangeError : Class com. google.firebase.auth.FirebaseAuth

javascript - 是否可以使用 Firebase 权限仅公开 Firebase 数据库中对象的某些字段以进行读取访问?

firebase - Firestore 数组包含对元素列表的查询

android - 如何处理 google Firestore 中的外键类情况?

ios - Firebase 观察者实际上做了什么?

java - AdapterView.OnItemClickListener 不起作用

android - 广播流媒体

android - 下载外部 .db 文件以在 Kotlin Android 应用程序中以只读方式使用?