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! :)
我正在尝试将有关用户集合中注册用户的数据写入我的 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! :)