База данных Firebase Realtime, setValue () ничего не делает - PullRequest
0 голосов
/ 07 октября 2018

Редактировать: проблема решена путем перемещения setValue (newProfile) под методом createUserWithEmailAndPassword.

Я пытаюсь зарегистрировать людей и поместить их информацию в базу данных с помощью Firebase в той же операции.Нет проблем с их регистрацией.Но даже если пользователь зарегистрирован, MainActivity запускается, а затем появляется всплывающее сообщение;setValue () в том же методе с этими командами не записывает информацию в базу данных.Вот запись в часть базы данных ( setValue () параметр newProfile объявлен как HashMap <> () ):

mAuth = FirebaseAuth.getInstance();
firebaseAuthStateListener = new FirebaseAuth.AuthStateListener() {
    @Override
    public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
        final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

        if(user != null){
            databaseReference = FirebaseDatabase.getInstance().getReference().
                    child(selected_server).child(user_role).child(user.getUid());
            databaseReference.setValue(newProfile);
            Toast.makeText(Registration.this,"Registration completed!",Toast.LENGTH_SHORT).show();
            Intent intent = new Intent(Registration.this,MainActivity.class);
            startActivity(intent);
            finish();
        }
    }
};

, а вот регистрационная часть:

btn_register.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        final String email = et_email.getText().toString();
        final String password = et_password.getText().toString();

        if(needed_role.equals("") || user_role.equals("") || selected_server.equals("") ) {
            Toast.makeText(Registration.this,"Please complete all informations" , Toast.LENGTH_SHORT).show();
        }

        else{
            mAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(Registration.this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    newProfile.put("E-mail" , et_email.getText().toString());
                    newProfile.put("Password" , et_password.getText().toString());
                    newProfile.put("Server" , selected_server);
                    newProfile.put("Summoner Name",et_summoner_name.getText().toString());
                    newProfile.put("Role", user_role);
                    newProfile.put("Needed" , needed_role);
                    if(!task.isSuccessful()){
                        Toast.makeText(Registration.this,"Sign up error" + task.getException(),Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
    }
});

1 Ответ

0 голосов
/ 07 октября 2018

Использование updateChildren

Убедитесь, что вы не используете hashmap, прежде чем вводить в него значение

    final DatabaseReference databaseRef =FirebaseDatabase.getInstance().getReference().
                    child(selected_server).child(user_role).child(user.getUid();
                                databaseRef.updateChildren(newProfile)
                                        .addOnCompleteListener(new OnCompleteListener<Void>() {
                                            @Override
                                            public void onComplete(@NonNull Task<Void> task) {

                                            }
                                        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...