Я работаю над приложением для Android и пытаюсь добавить пользователя в свою базу данных в реальном времени в Firebase.Это делается во фрагменте регистрации.Вот код для этого:
public class RegisterFragment extends Fragment {
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @return A new instance of fragment RegisterFragment.
*/
// TODO: Rename and change types and number of parameters
public static RegisterFragment newInstance() { return new RegisterFragment(); }
private FirebaseAuth mAuth;
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("Users");
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_register,
container, false);
mAuth = FirebaseAuth.getInstance();
final EditText user = view.findViewById(R.id.username);
final EditText email = view.findViewById(R.id.email);
final EditText password = view.findViewById(R.id.password);
final EditText confirmPassword = view.findViewById(R.id.confirmpassword);
final Button btnAction = view.findViewById(R.id.AddUser);
final Button btnLogin = view.findViewById(R.id.btnLoginTab);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.replace(R.id.copyright_frame_layout, LoginFragment.newInstance());
ft.addToBackStack(null);
ft.commit();
}
});
btnAction.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (password.getText().toString().equals(confirmPassword.getText().toString()))
AddUser(user.getText().toString(), email.getText().toString(), password.getText().toString(), confirmPassword.getText().toString());
else {
password.getText().clear();
confirmPassword.getText().clear();
Toast.makeText(getActivity(), "Passwords do not match, please reenter your password!", Toast.LENGTH_SHORT).show();
return;
}
}
});
return view;
}
private void AddUser(final String username, final String email, final String password, final String confirmpassword){
// Write a message to the database
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
Toast.makeText(getActivity(),"A user with this same email is found!",Toast.LENGTH_SHORT).show();
return;
}
else{
Users user = new Users(email, password, username);
String messageId = myRef.push().getKey();
myRef.child(messageId).setValue(user);
Toast.makeText(getActivity(),"A new user has been added!",Toast.LENGTH_SHORT).show();
}
}
});
}
}
Что мой код делает сейчас, так это то, что он принимает некоторые базовые значения (имя пользователя, адрес электронной почты и пароль) и вместо того, чтобы добавить это в мою базу данных в реальном времени, которая называется Users,это просто добавление его в качестве одного из пользователей аутентификации.

Вот что у меня есть в пользователях

Я хотел бы знать, как мне продолжать добавлять пользователей в мою базу данных в реальном времени.