2016-11-20 69 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

我怎樣才能保存一堆人的信息,如姓名,年齡,身份證等......包括保存數據的日期,以便根據給定日期檢索單身人士的數據? –