我正在制作一个应用程序,我需要注册用户。我还有两个复选框,用户可以在其中选择性别(男性或女性)。我知道该复选框可以了解布尔值true或false,但是我想知道如何使用firebase做到这一点。 这正是我需要做的: how to override action bar back button in android?
这是我所做的:
private void SignUp(final String firstName, final String lastName, final String email, final String password, final String checkMale, final String checkFemale) {
mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()) {
FirebaseUser user = mAuth.getCurrentUser();
assert user != null;
String userId =user.getUid();
reference = FirebaseDatabase.getInstance().getReference().child("Users").child(userId);
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("id", userId);
hashMap.put("firstName", firstName);
hashMap.put("lastName", lastName);
hashMap.put("email", email.toLowerCase());
if(male.isChecked() && female.isChecked()) {
hashMap.put("male", checkMale);
hashMap.put("female", checkFemale);
}
reference.setValue(hashMap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()) {
pd.dismiss();
Intent intent = new Intent(RegisterActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Toast.makeText(RegisterActivity.this, "User Registered successfully", Toast.LENGTH_SHORT).show();
}
}
});
} else {
pd.dismiss();
Toast.makeText(RegisterActivity.this, "You can't register with this email or password", Toast.LENGTH_SHORT).show();
}
}
});
}
感谢您的帮助。
答案 0 :(得分:1)
您可以使用 Radio Buttons 代替复选框。
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton android:id="@+id/malleButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Male"
android:onClick="onRadioButtonClicked"/>
<RadioButton android:id="@+id/femaleButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Female"
android:onClick="onRadioButtonClicked"/>
</RadioGroup>
在代码中,您可以检查选择了哪个。
public void onRadioButtonClicked(View view) {
// Is the button now checked?
boolean checked = ((RadioButton) view).isChecked();
// Check which radio button was clicked
switch(view.getId()) {
case R.id.maleButton:
if (checked)
hashMap.put("male", true);
break;
case R.id.femaleButton:
if (checked)
hashMap.put("male", false);
break;
}
}
如果用户只能选择一个,那么您也不需要在firebase男性和女性中存储2个变量。在其他情况下(如果用户可以同时选择两者),则存储2个变量并删除无线电组,以便用户可以同时选择两者。
答案 1 :(得分:0)
我认为在性别方面都无法一次检查,并且您保留了&&条件,因此在这里我不会工作:
if(male.isChecked() && female.isChecked()) {
hashMap.put("male", checkMale);
hashMap.put("female", checkFemale);
}
首先不需要保存男性和女性的价值。只需保留一次“性别”键,然后指定一个字符串或数字即可,例如男性为1或“ m”,女性为2或“ f”,并将其与所有值一起保存。
在这里您可以在RadioGroup“性别”中使用RadioButton,而不仅仅是RadioButtons。
供您参考:
if(male.isChecked())
hashMap.put("gender", "m");
else
hashMap.put("gender", "f");
答案 2 :(得分:0)
使用单选按钮代替复选框。
with testdata(vala, valb, valc) as(
select '1,2,3,4' as vala
,'5,6,7,8' as valb
,'9,10,11' as valc
from dual
)
select regexp_substr(vala,'[^,]+', 1, level) as vala -- Pick the
,regexp_substr(valb,'[^,]+', 1, level) as valb -- value at this
,regexp_substr(valc,'[^,]+', 1, level) as valc -- position or null
from testdata
connect by regexp_substr(vala,'[^,]+', 1, level) is not null -- Generate one row if
or regexp_substr(valb,'[^,]+', 1, level) is not null -- any of the positions
or regexp_substr(valc,'[^,]+', 1, level) is not null -- would have a value
获取RadioGroup ID
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/rdgGender"
android:orientation="vertical">
<RadioButton android:id="@+id/rbMale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Male"
android:onClick="onRadioButtonClicked"/>
<RadioButton android:id="@+id/rbFemale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Female"
android:onClick="onRadioButtonClicked"/>
</RadioGroup>
在提交按钮上单击
RadioGroup rdgGender = findViewbyId(R.id.rdgGender);