Firebase 实时数据库未更新 // 数据未添加到 Firebase 实时数据库
Posted
技术标签:
【中文标题】Firebase 实时数据库未更新 // 数据未添加到 Firebase 实时数据库【英文标题】:Firebase Realtime Database not getting updated // Data not getting added to the Firebase Realtime Database 【发布时间】:2021-10-04 08:49:20 【问题描述】:所以我正在制作一个聊天应用程序,我遇到了一个问题,我试图将用户详细信息添加到我的实时数据库中,但它无法正常工作,因此我稍后可以将它们显示给登录用户
这是我的注册活动
public class RegisterActivity extends AppCompatActivity
EditText username;
EditText email;
EditText password;
Button registerButton;
TextView oldMember;
FirebaseAuth auth;
DatabaseReference myRef;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
username = findViewById(R.id.usernameEditText);
email = findViewById(R.id.emailEditText);
password = findViewById(R.id.passwordEditText);
registerButton = findViewById(R.id.RegisterButton);
oldMember = findViewById(R.id.LoginTextView);
auth = FirebaseAuth.getInstance();
myRef = FirebaseDatabase.getInstance().getReference("MyUsers");
registerButton.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
String usernameText = username.getText().toString();
String emailText = email.getText().toString();
String passwordText = password.getText().toString();
if(TextUtils.isEmpty(usernameText) || TextUtils.isEmpty(emailText) || TextUtils.isEmpty(passwordText))
Toast.makeText(RegisterActivity.this, "Please Fill the Required Info", Toast.LENGTH_SHORT).show();
else
Register(usernameText, emailText, passwordText);
);
oldMember.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
startActivity(intent);
finish();
);
private void Register(String username, String email, String password)
auth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>()
@Override
public void onComplete(@NonNull @org.jetbrains.annotations.NotNull Task<AuthResult> task)
if(task.isSuccessful())
FirebaseUser firebaseUser = auth.getCurrentUser();
String userid = firebaseUser.getUid();
myRef = FirebaseDatabase.getInstance()
.getReference("MyUsers")
.child(userid);
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("id", userid);
hashMap.put("username", username);
hashMap.put("imageURL", "default");
myRef.setValue(hashMap).addOnCompleteListener(new OnCompleteListener<Void>()
@Override
public void onComplete(@NonNull @NotNull Task<Void> task)
if(task.isSuccessful())
Intent intent = new Intent(getApplicationContext(), MainHomeActivity.class);
//intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
);
else
Toast.makeText(RegisterActivity.this, "Invalid Email or Password", Toast.LENGTH_SHORT).show();
);
this is how my realtime database looks like
这些是我的实时数据库规则
"rules":
".read": true,
".write": true
我将不胜感激!
【问题讨论】:
注册后到MainHomeActivity
了吗?
您是否收到任何错误消息?
您是否尝试检查如果 Tasks 对象不成功会发生什么?请回复@AlexMamo
@TicherhazFreePalestine 不,它没有,那是当我意识到数据甚至没有被添加到 firebase 实时数据库时。 @TarikHuber 不,没有。 @AlexMamo 是的,我做到了,实际上并没有出现太多。谢谢大家的回复,我设法让它“修复”了在将 google-services.json
文件添加到我的 android 项目之前,一旦我完成了所有工作,一切都很好!
由于某种原因,在启用实时数据库之前添加了 json 文件,然后再启用它使东西无法正常工作,即使我后来确实重新下载了它,有点奇怪。
【参考方案1】:
而不是使用 HashMap 将数据添加到 firebase 实时数据库
myRef = FirebaseDatabase.getInstance()
.getReference("MyUsers")
.child(userid);
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("id", userid);
hashMap.put("username", username);
hashMap.put("imageURL", "default");
为信息创建一个模型类
给定信息的示例模型类
public class userRegisteration()
Sting id;
String username;
String imageURL;
//to add details it needs an empty constructor
userRegisteration()
userRegisteration(String id,String username,String imageURL)
this.id = id;
this.username = username;
this.imageURL = imageURL;
public void setID(String id)this.id = id
public void setUsername(String username)this.username= username
public void setImgeURL(String imageURL)this.imageURL = imageURL
public String getID()return id
public String getUsername()return username
public String getImageURL()return imageURL
相信我会起作用的
【讨论】:
以上是关于Firebase 实时数据库未更新 // 数据未添加到 Firebase 实时数据库的主要内容,如果未能解决你的问题,请参考以下文章
数据未插入 Firebase 实时数据库抛出 Android