2016-11-20 68 views
6

我无法将对象添加到Firebase实时数据库。我试了下面的代码。但是这个代码执行时ANDROID FirebaseDatabase:无法保存对象

db.child("Users").setValue(person); 

我的应用程序崩溃,

public class Person{ 
    String fname; 
    String lname; 
    Person() 
    {} 
    Person(String fname,String lname) 
    { 
     this.fname = fname; 
     this.lname = lname; 
    } 

    public String getFname() { 
     return fname; 
    } 

    public String getLname() { 
     return lname; 
    } 
} 

以下是错误。

11-20 15:34:57.762 2752年至2752年/ shazdroid.com.surveyapp E/AndroidRuntime: 致命异常:主 工艺:shazdroid.com.surveyapp,PID:2752 com.google.firebase .database.DatabaseException:发现冲突 名称的获取者:isChangingConfigurations at com.google.android.gms.internal.zzamy $ zza。(Unknown Source) at com.google.android.gms.internal.zzamy.zzj(Unknown源) at com.google.android.gms.internal.zzamy.zzca(Unknown Source) at com.google.android。 gms.internal.zzamy.zzch(Unknown Source) at com.google.android.gms.internal.zzamy $ zza.zzci(Unknown Source) at com.google.android.gms.internal.zzamy.zzca(Unknown Source ) at com.google.android.gms.internal.zzamy.zzbz(Unknown Source) at com.google.firebase.database.DatabaseReference.zza(Unknown Source) at com.google.firebase.database.DatabaseReference.setValue (Unknown Source) at shazdroid.com.surveyapp.AddMember.savePerson(AddMember.java:207) at shazdroid.com.surveyapp.AddMember.access $ 000(AddMember.java:37) at shazdroid.com.surveyapp。使用addMember $ 6.onClick(添加Member.java:193) at android.view.View.performClick(View.java:5610) at android.view.View $ PerformClick.run(View.java:22260) at android.os.Handler.handleCallback( Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread。 java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:865) at com.android.internal。 os.ZygoteInit.ma在(ZygoteInit.java:755)

这是我如何保存对象。

private void savePerson() { 
    suc.show(); 
    Person person = new Person("shahbaz","ansari"); 
    db.child("User").setValue(person) 
      .addOnCompleteListener(AddMember.this, new OnCompleteListener<Void>() { 
     @Override 
     public void onComplete(@NonNull Task<Void> task) { 
      if(task.isSuccessful()) 
      { 
       suc.dismissWithAnimation(); 
       suc = new SweetAlertDialog(AddMember.this,SweetAlertDialog.SUCCESS_TYPE); 
       suc.setTitleText("Successful"); 
       suc.setContentText("Saving data successful"); 
       suc.setConfirmText("OK"); 
       suc.setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() { 
        @Override 
        public void onClick(SweetAlertDialog sweetAlertDialog) { 
         sweetAlertDialog.dismissWithAnimation(); 
        } 
       }).show(); 
      }else{ 
       suc.dismissWithAnimation(); 
       suc = new SweetAlertDialog(AddMember.this,SweetAlertDialog.ERROR_TYPE); 
       suc.setTitleText("Failed"); 
       suc.setContentText("Failed to save data"); 
       suc.setConfirmText("Try Again"); 
       suc.setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() { 
        @Override 
        public void onClick(SweetAlertDialog sweetAlertDialog) { 
         savePerson(); 

        } 
       }); 
       suc.setCancelText("cancle"); 
       suc.setCancelClickListener(new SweetAlertDialog.OnSweetClickListener() { 
        @Override 
        public void onClick(SweetAlertDialog sweetAlertDialog) { 
         sweetAlertDialog.dismissWithAnimation(); 
        } 
       }).show(); 
      } 
     } 
    }); 

回答

16

堆栈跟踪指isChangingConfigurations,这是Activity的方法的名称。这可能表示您已将类Person声明为活动的内部类。当Firebase序列化为Person时,它还会尝试序列化封闭的Activity类并失败。

Person声明移至包级别或更改声明以使其成为静态内部类:public static class Person

+0

我怎样才能保存一堆人的信息,如姓名,年龄,身份证等......包括保存数据的日期,以便根据给定日期检索单身人士的数据? –