Firebase实时数据库,setValue()不执行任何操作

时间:2018-10-07 13:23:30

标签: android firebase firebase-realtime-database

编辑:通过将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 :(得分:0)

使用define-properties

在将价值投入使用之前,请确保您没有使用updateChildren

hashmap