2016-11-20 7 views
6

ファイアーベースリアルタイムデータベースにオブジェクトを追加できませんでした。私は次のコードを試しました。このコードはここで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:名前の取得に矛盾する ゲッターが見つかりました:isChildingConfigurations com.google.android.gms.internal.zzamy $ zza。(不明な情報源) com.google.android.gms.internal.zzamy.zzj(不明ソース) (com.google.android.gms.internal.zzamy.zzca(不明な情報源) 、com.google.android) gms.internal.zzamy.zzch(不明な情報源) com.google.android.gms.internal.zzamy $ zza.zzci(不明な情報源) com.google.android.gms.internal.zzamy.zzca(不明な情報源) com.google.android.gms.internal.zzamy.zzbz(不明な情報源) com.google.firebase.database.DatabaseReference.zza(不明な情報源) com.google.firebase.database.DatabaseReference.setValue shazdroid.com.surveyapp.AddMember.savePerson(AddMember.java:207) at shazdroid.com.surveyapp.AddMember.access $ 000(AddMember.java:37) shazdroid.com.surveyappで ソース) AddMember $ 6.onClick(Add (View.java:22360) (android.os.Handler.handleCallback(0)) Handler.java:751) (android.os.Handler.dispatchMessage(Handler.java:95) (android.os.Looper.loop(Looper.java:154) 、android.app.ActivityThread.main(ActivityThread。 Javaの:6077) java.lang.reflect.Method.invoke(ネイティブメソッド) で com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:865) で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

スタックトレースがActivityのメソッドの名前である、isChangingConfigurationsを指します。これはおそらく、クラスPersonをアクティビティーの内部クラスとして宣言したことを示しています。 FirebaseがPersonをシリアル化するとき、それはまた、囲みアクティビティクラスを直列化しようとし、失敗します。

Personの宣言をパッケージレベルに移動するか、宣言を静的な内部クラスに変更します(public static class Person)。

+0

名前、年齢、身分証明書などのような一人の人の情報を保存するにはどうしたらよいですか? –

関連する問題