DatabaseException: No properties to serialize found on class
DatabaseException: No properties to serialize found on class
我遇到了错误com.google.firebase.database.DatabaseException: 在类com.example.journyabode.detailsofUser中找不到可序列化的属性
。\n我尝试了更改proguard
规则,但仍然无法解决。\n
public class User_Details extends AppCompatActivity { EditText F_name,L_Name,Mobile,address; Button update; private FirebaseAuth mAuth; private String user; private DatabaseReference myref; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.activity_user_details); mAuth =FirebaseAuth.getInstance (); user = mAuth.getCurrentUser ().getUid (); myref = FirebaseDatabase.getInstance ().getReference ("Users"); if(mAuth.getCurrentUser ()== null){ finish (); startActivity (new Intent (this,Login.class)); } F_name = (EditText)findViewById (R.id.F_Name); L_Name = (EditText)findViewById (R.id.L_Name); Mobile = (EditText)findViewById (R.id.Phone); address = (EditText)findViewById (R.id.Address); update = (Button)findViewById (R.id.update); update.setOnClickListener (new View.OnClickListener () { @Override public void onClick(View view) { String First_Name = F_name.getText ().toString ().trim (); String Last_Name = L_Name.getText ().toString ().trim (); String phone = Mobile.getText ().toString ().trim (); String addres = address.getText ().toString ().trim (); if (TextUtils.isEmpty (First_Name)) { Toast.makeText (User_Details.this, "请输入名字", Toast.LENGTH_SHORT).show (); return; } if (TextUtils.isEmpty (Last_Name)) { Toast.makeText (User_Details.this, "请输入姓氏", Toast.LENGTH_SHORT).show (); return; } if (TextUtils.isEmpty (phone)) { Toast.makeText (User_Details.this, "请输入电话号码", Toast.LENGTH_SHORT).show (); return; } if (TextUtils.isEmpty (addres)) { Toast.makeText (User_Details.this, "请输入地址", Toast.LENGTH_SHORT).show (); return; } detailsofUser userDetail = new detailsofUser (First_Name, Last_Name, phone, addres); FirebaseUser user = mAuth.getCurrentUser (); myref.child (user.getUid ()).setValue (userDetail); Intent intent = new Intent (User_Details.this,Homepage.class); startActivity (intent); Toast.makeText (User_Details.this, "详细信息已保存", Toast.LENGTH_SHORT).show (); } }); } }
\nLogcat:\n
2019-02-23 00:32:45.205 27516-27516/? E/Zygote: isWhitelistProcess - 进程是白名单 2019-02-23 00:32:45.205 27516-27516/? E/libpersona: scanKnoxPersonas 2019-02-23 00:32:45.206 27516-27516/? E/libpersona: 无法打开文件 - /data/system/users/0/personalist.xml - 无此文件或目录 2019-02-23 00:32:53.426 27516-27516/com.example.journyabode E/AndroidRuntime: 致命异常:主要进程 进程:com.example.journyabode,PID:27516 com.google.firebase.database.DatabaseException: 在类com.example.journyabode.detailsofUser中找不到可序列化的属性 at com.google.android.gms.internal.firebase_database.zzku.(Unknown Source:761) at com.google.android.gms.internal.firebase_database.zzkt.zza(Unknown Source:12) at com.google.android.gms.internal.firebase_database.zzkt.zzi(Unknown Source:249) at com.google.android.gms.internal.firebase_database.zzkt.zzh(Unknown Source:0) at com.google.firebase.database.DatabaseReference.zza(Unknown Source:10) at com.google.firebase.database.DatabaseReference.setValue(Unknown Source:7) at com.example.journyabode.User_Details$1.onClick(User_Details.java:81) at android.view.View.performClick(View.java:6993) at android.widget.TextView.performClick(TextView.java:12752) at android.view.View$PerformClick.run(View.java:26509) at android.os.Handler.handleCallback(Handler.java:790) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:7025) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
在使用Firebase时,我遇到了一个问题:DatabaseException: No properties to serialize found on class。通过阅读Stack Overflow上的一个帖子(链接:Firebase No properties to serialize found on class),我找到了问题的原因和解决方法。
原因是我没有将变量定义为public。这是我犯下的错误。在使用Firebase时,所有要序列化的属性都必须是public的。
解决方法是将所有要序列化的属性改为public。在我的代码中,我需要确保所有要存储到Firebase数据库中的属性都是public的。
下面是我根据Stack Overflow帖子中的解决方案修改后的代码示例:
public class MyClass {
public String name;
public int age;
public boolean isActive;
public MyClass() {
// Default constructor required for Firebase
}
public MyClass(String name, int age, boolean isActive) {
this.name = name;
this.age = age;
this.isActive = isActive;
}
}
通过将属性改为public,我成功解决了DatabaseException: No properties to serialize found on class的问题。现在,我能够正确地将对象存储到Firebase数据库中了。