I created 3 EditText for my signup layout. Username, Email, and password. Instead of storing both the email and username value data in the same path, I want to store all the usernames in one path and all the emails in another path. this is an example of my firebase real-time database: image 1
this is my code:
package com.example.brotookabreak;
import static android.content.ContentValues.TAG;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Dialog;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.util.Log;
import android.util.Patterns;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.SignInMethodQueryResult;
import com.google.firebase.database.FirebaseDatabase;
public class activity_Register extends AppCompatActivity implements View.OnClickListener {
//valuables//
//dialog//
private TextView btnShowDialog;
private Dialog dialog;
//account register//
private EditText etUsername, etEmail, etPassword;
private ProgressBar progressBar;
private TextView registerUser;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
//Firebase auth register//
mAuth = FirebaseAuth.getInstance();
registerUser = (Button) findViewById(R.id.btnSignup);
registerUser.setOnClickListener(this);
etUsername = (EditText) findViewById(R.id.signup_username);
etEmail = (EditText) findViewById(R.id.signup_email);
etPassword = (EditText) findViewById(R.id.signup_password);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
//create dialog//
dialog = new Dialog(this);
dialog.setContentView(R.layout.popup_signup_options);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.setCancelable(false);
//apply animation from style//
dialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation;
//get popup elements id, create name for them and onclick//
TextView popup_signup_close = dialog.findViewById(R.id.signup_popup_close);
Button popup_signup_option1 = dialog.findViewById(R.id.signup_popup_option1);
Button popup_signup_option2 = dialog.findViewById(R.id.signup_popup_option2);
//actions on popup buttons//
popup_signup_close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
}
});
popup_signup_option1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openActivityLogin();
}
});
popup_signup_option2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
}
});
//button show dialog//
btnShowDialog = findViewById(R.id.popup_signup_options);
btnShowDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.show();
}
});
}
private void openActivityLogin() {
Intent intent = new Intent(activity_Register.this, MainActivity.class);
startActivity(intent);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btnSignup:
btnSignup();
break;
}
}
//add strings//
private void btnSignup() {
String username = etUsername.getText().toString().trim();
String email = etEmail.getText().toString().trim();
String password = etPassword.getText().toString().trim();
//errors for EditText//
if(username.isEmpty()){
etUsername.setError("Username field cannot be empty");
etUsername.requestFocus();
return;
}
if(email.isEmpty()){
etUsername.setError("Email field cannot be empty");
etEmail.requestFocus();
return;
}
if(!Patterns.EMAIL_ADDRESS.matcher(email).matches()){
etEmail.setError("The email does not seem to be valid");
etEmail.requestFocus();
return;
}
if(password.length()< 6){
etPassword.setError("Your password must have a minimum of 6 characters");
etPassword.requestFocus();
return;
}
progressBar.setVisibility(View.VISIBLE);
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
User user = new User(username, email);
FirebaseDatabase.getInstance().getReference("Users")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
progressBar.setVisibility(View.GONE);
//redirect to activity enable_two_password//
startActivity(new Intent(activity_Register.this, enable_twoPassword.class));
}else {
Toast.makeText(activity_Register.this, "Failed to create your account at this time.", Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
}
}
});
}else {
Toast.makeText(activity_Register.this, "Failed to create your account at this time. Contact mazenoone@gmail.com if this error keeps repeating.", Toast.LENGTH_LONG).show();
progressBar.setVisibility(View.GONE);
}
}
});
}
}