我正在尝试将用户数据存储在Firebase数据库中。这是我处理onClick并将数据发送到数据库的代码:
public void onClickStore(final View view)
{
String name = binding.getUser().name.get();
String email = binding.getUser().email.get();
DatabaseReference rootDb = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersDatabase = rootDb.child("Users");
Map<String, JSONObject> userMap= new HashMap<>();
JSONObject userObject = new JSONObject();
try
{
userObject.put("Name", name);
userObject.put("Email", email);
}
catch (JSONException e)
{
e.printStackTrace();
}
userMap.put("User_01", userObject);
usersDatabase.setValue(userMap);
}
不幸的是,在尝试执行最后一行代码(将地图插入实时数据库)时,应用程序不断崩溃。有趣的是,当我对要插入的数据进行硬编码但不能使用userMap
或userObject
时,它可以正常工作。
这是Android Monitor错误的描述:
03-19 08:20:34.937 22378-22378 / com.example.jacek.simplyfootball E / AndroidRuntime:致命异常:主要 过程:com.example.jacek.simplyfootball,PID:22378 com.google.firebase.database.DatabaseException:没有属性 在类org.json.JSONObject上找到的序列化 在com.google.android.gms.internal.zzbqi $ zza。(未知来源) 在com.google.android.gms.internal.zzbqi.zzi(未知来源) 在com.google.android.gms.internal.zzbqi.zzax(未知来源) 在com.google.android.gms.internal.zzbqi.zzax(未知来源) 在com.google.android.gms.internal.zzbqi.zzaw(未知来源) 在com.google.firebase.database.DatabaseReference.zza(未知来源) 在com.google.firebase.database.DatabaseReference.setValue(未知 资源) 在 com.example.jacek.simplyfootball.RegisterActivity.onClickStore(RegisterActivity.java:89) 在 com.example.jacek.simplyfootball.databinding.ActivityRegisterBinding $ OnClickListenerImpl.onClick(ActivityRegisterBinding.java:290) 在android.view.View.performClick(View.java:5198) 在android.view.View $ PerformClick.run(View.java:21147) 在android.os.Handler.handleCallback(Handler.java:739) 在android.os.Handler.dispatchMessage(Handler.java:95) 在android.os.Looper.loop(Looper.java:148) 在android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
非常感谢你的帮助。 谢谢
答案 0 :(得分:1)
我不明白你真正想做的事情但是......
而不是
JSONObject userObject = new JSONObject();
您可以在用户
上创建模型public class Usermodel {
String Name,Email;
public Usermodel(String name, String email) {
Name = name;
Email = email;
}
public Usermodel() {
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getEmail() {
return Email;
}
public void setEmail(String email) {
Email = email;
}
}
并创建新对象
Usermodel model = new Usermodel();
model.setname("");
model.setEmail("");
并提前编写代码
如果您需要,Firebase会创建它的主键
YourFirebaseRef.child("users").push().setValue(model);