单击按钮时如何将多个复选框值发送到 Firebase 数据库 Android

How to send multiple checkbox values to Firebase Database when a Button is clicked Android

我想将多个复选框值发送到 Firebase 数据库。我在 XML 中选择了三个复选框和一个按钮。我想在单击按钮时将选定的复选框文本存储到 Firebase,然后转到另一个 Activity。这是我的代码,但它不起作用。

    mFirstCheckBox = findViewById(R.id.firstCheckBox);
    mSecondCheckBox = findViewById(R.id.secondCheckBox);
    mThirdCheckBox = findViewById(R.id.thirdCheckBox);

    mDatabase = FirebaseDatabase.getInstance().getReference().child("Users");

    mAuth = FirebaseAuth.getInstance();

    saveButton = findViewById(R.id.saveButton);
    saveButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            switch (view.getId()) {

                case R.id.firstCheckBox:
                    if(mFirstCheckBox.isChecked()) {

                        String user_id = mAuth.getCurrentUser().getUid();
                        DatabaseReference current_user_db = mDatabase.child(user_id);

                        current_user_db.child("1").setValue("Compiler design");

                    }
                    break;

                case R.id.secondCheckBox:
                    if(mSecondCheckBox.isChecked()) {

                        String user_id = mAuth.getCurrentUser().getUid();
                        DatabaseReference current_user_db = mDatabase.child(user_id);

                        current_user_db.child("2").setValue("Operating Systems");

                    }
                    break;

                case R.id.thirdCheckBox:

                    if(mThirdCheckBox.isChecked()) {

                        String user_id = mAuth.getCurrentUser().getUid();
                        DatabaseReference current_user_db = mDatabase.child(user_id);

                        current_user_db.child("3").setValue("Software Engineering");

                    }
                    break;

            }
            Intent interestIntent = new Intent(HomeActivity.this, InterestsActivity.class);
            interestIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(interestIntent);

        }
    });

这是我想在 Firebase 数据库中实现的,但没有得到。在 'Users' 和 'Values(1,2,3)' 之间必须有 user_Id。它在图中丢失 因为我在 Firebase

中输入了它们

请指导我,我哪里错了。如果我完全错了,请告诉我完成此操作的任何其他替代方法。

提前致谢。

 CheckBoxes only have two states - checked and unchecked, i.e. true and false. 
 Therefore, you're correct in saying a String isn't a suitable datatype 
 for holding information given by a CheckBox.
 What you want to use is a boolean.

 Treat CheckBoxes as having boolean values (the isChecked() 
 method each CheckBox has will probably come in handy), 
 and save them .

首先,当您使用这个 view.getId() 时,您得到的是被点击的按钮的 ID,而不是被选中的复选框的 ID。其次,无需在 switch 语句的每个 case 中都使用以下代码行:

String user_id = mAuth.getCurrentUser().getUid();

只用一次就够了。事实上,根本不需要使用 switch 语句。您的代码应如下所示:

saveButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        String user_id = mAuth.getCurrentUser().getUid();
        DatabaseReference current_user_db = mDatabase.child(user_id);

        if(mFirstCheckBox.isChecked()) {
            current_user_db.child("1").setValue("Compiler design");
        }

        if(mSecondCheckBox.isChecked()) {
            current_user_db.child("2").setValue("Operating Systems");
        }

        if(mThirdCheckBox.isChecked()) {
            current_user_db.child("3").setValue("Software Engineering");
        }

        Intent interestIntent = new Intent(HomeActivity.this, InterestsActivity.class);
        interestIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(interestIntent);
    }
});