Android studio + Firebase - 无法写入数据

Android studio + Firebase - Cannot Write data

我正在尝试将有关用户集合中注册用户的数据写入我的 Cloud Firestone, 当然它必须与授权中的 UID 代码相关联(Registration/login 系统正常工作并在我的 Firebase 中编写 auths)。

XML注册按钮:

<Button
    android:id="@+id/RegisterBtn"
    android:layout_width="0dp"
    android:layout_height="51dp"
    android:layout_marginStart="16dp"
    android:layout_marginLeft="16dp"
    android:layout_marginTop="92dp"
    android:layout_marginEnd="16dp"
    android:layout_marginRight="16dp"
    android:text="REGISTER"
    app:backgroundTint="#870404"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/Password" />

JAVA 注册:

...
FirebaseFirestore database;
String userID;
...

database = FirebaseFirestore.getInstance();

mRegisterBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String name = mFullName.getText().toString().trim();
                String email = mEmail.getText().toString().trim();
                String password = mPassword.getText().toString().trim();
                String confirmPassword = mconfirmPassword.getText().toString().trim();

...

//REGISTER THE USER
                fAuth.createUserWithEmailAndPassword(email,password).addOnSuccessListener(new OnSuccessListener<AuthResult>() {
                    @Override
                    public void onSuccess(AuthResult authResult) {
                        startActivity(new Intent(getApplicationContext(),MainActivity.class));
                        finish();
                    }
                }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Toast.makeText(Register.this, "Error!" + e.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                });

                //FIRECLOUD INSERT DATA
                //GET ID FROM AUTH
                userID = fAuth.getCurrentUser().getUid();
                saveOnFireCloud(userID,name,email);


            }
        });

...

 private void saveOnFireCloud(String userID, String name, String email) {
        Map<String,Object> mappa = new HashMap<>();
        mappa.put("id",userID);
        mappa.put("name",name);
        mappa.put("email",email);
        database.collection("Users").document(userID).set(mappa)
                .addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        Toast.makeText(Register.this, "Data Inserted!", Toast.LENGTH_SHORT).show();
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Toast.makeText(Register.this, "Error Inserting Data!" + e.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                });
    }

在 Cloud Firestone 中,我刚刚创建了用户集合。 我注意到在 Tool>Firebase>Firestone Cloud 中告诉我: 将您的应用连接到 Firebase

但即使我已经点击并且看起来构建正确, 底部的“将 Cloud Firestone 添加到您的应用程序”按钮仍然出现,而不是 ✓

我是否以正确的方式制定了 link UID 的步骤? 当我单击注册按钮时,在运行时没有收到任何错误,创建了 Auth 用户,但用户数据仍为空白...我真的很生气,我只是停留在这一步!

提前感谢您的回答!!

编辑:

非常感谢您的回答,弗兰克。 是的,如果我在里面设置断点: private void saveOnFireCloud(String userID, String name, String email):

这是该行的结果: database.collection("Users").document(userID).set(mappa):

this = { Register@17322 } 
userID = "YVI9zPC2VJbpd4JpMCeBOZNDsbD2" 
name = "a" email = "test@gmail.com" 
mappa = {HashMap@17356} 
size = 3 
database = {FirebaseFirestone@17357} 

但是如果我设置2个断点

public void onComplete(@NonNull Task<Void> task) { and public void onFailure(@NonNull Exception e) 

调试跳过...数据未写入..

我通过替换方法解决了:

database.collection("Users").document(userID).set(mappa)

使用方法:

database.collection("Users").add(mappa)

似乎可以使用 .set(Hashmap) 方法来替换现有的 object, 相反,方法 .add(Hashmap) 将 object 添加到数据库中。我在 collection.

中正确插入了记录

顺便说一句,现在我又被这个问题卡住了,我尝试再次测试它,现在,没有在 FirebaseCloud 中插入数据。 当我点击继续时,没有任何反应!就在控制台中“框架不可用”

已解决 2.0: Android studio 好像有现金问题,要解决它,请取消 C:\Users\PIDIOTTO\AppData\Roaming\Google 中的 AndroidStudio 文件夹,然后重新启动 Android Studio! :)