单击按钮时如何将多个复选框值发送到 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);
}
});
我想将多个复选框值发送到 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);
}
});