2016-06-14 12 views
0

setValue関数を使用してFirebaseデータベースに定義したUserオブジェクトを送信しようとしていますが、成功しません。たとえドキュメンテーションの例がhereであっても私にとってはうまくいきません。なぜのための任意のアイデアFirebaseのsetValueが機能していない、「スナップショットの解析に失敗しました」

AndroidRuntime: FATAL EXCEPTION: main 
    Process: com.example.lerun.crazybugs, PID: 4243 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.lerun.crazybugs/com.example.lerun.crazybugs.User}: com.firebase.client.FirebaseException: Failed to parse to snapshot 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
     at android.app.ActivityThread.-wrap11(ActivityThread.java) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:148) 
     at android.app.ActivityThread.main(ActivityThread.java:5417) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
    Caused by: com.firebase.client.FirebaseException: Failed to parse to snapshot 
     at com.firebase.client.Firebase.setValueInternal(Firebase.java:357) 
     at com.firebase.client.Firebase.setValue(Firebase.java:248) 
     at com.example.lerun.crazybugs.User.onCreate(User.java:38) 
     at android.app.Activity.performCreate(Activity.java:6237) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
     at android.app.ActivityThread.-wrap11(ActivityThread.java)  
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
     at android.os.Handler.dispatchMessage(Handler.java:102)  
     at android.os.Looper.loop(Looper.java:148)  
     at android.app.ActivityThread.main(ActivityThread.java:5417)  
     at java.lang.reflect.Method.invoke(Native Method)  
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
    Caused by: java.lang.IllegalArgumentException: Conflicting getter definitions for property "changingConfigurations": android.app.Activity#isChangingConfigurations(0 params) vs android.app.Activity#getChangingConfigurations(0 params) 
     at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:2615) 
     at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:2542) 
     at com.firebase.client.Firebase.setValueInternal(Firebase.java:346) 
     at com.firebase.client.Firebase.setValue(Firebase.java:248)  
     at com.example.lerun.crazybugs.User.onCreate(User.java:38)  
     at android.app.Activity.performCreate(Activity.java:6237)  
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)  
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)  
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
     at android.app.ActivityThread.-wrap11(ActivityThread.java)  
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
     at android.os.Handler.dispatchMessage(Handler.java:102)  
     at android.os.Looper.loop(Looper.java:148)  
     at android.app.ActivityThread.main(ActivityThread.java:5417)  
     at java.lang.reflect.Method.invoke(Native Method)  
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
    Caused by: com.fasterxml.jackson.databind.JsonMappingException: Conflicting getter definitions for property "changingConfigurations": android.app.Activity#isChangingConfigurations(0 params) vs android.app.Activity#getChangingConfigurations(0 params) 
     at com.fasterxml.jackson.databind.SerializerProvider._createAndCacheUntypedSerializer(SerializerProvider.java:838) 
     at com.fasterxml.jackson.databind.SerializerProvider.findValueSerializer(SerializerProvider.java:387) 
     at com.fasterxml.jackson.databind.SerializerProvider.findTypedValueSerializer(SerializerProvider.java:478) 
     at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:97) 
     at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:2593) 
     at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:2542)  
     at com.firebase.client.Firebase.setValueInternal(Firebase.java:346)  
     at com.firebase.client.Firebase.setValue(Firebase.java:248)  
     at com.example.lerun.crazybugs.User.onCreate(User.java:38)  
     at android.app.Activity.performCreate(Activity.java:6237)  
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)  
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)  
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
     at android.app.ActivityThread.-wrap11(ActivityThread.java)  
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
     at android.os.Handler.dispatchMessage(Handler.java:102)  
     at android.os.Looper.loop(Looper.java:148)  
     at android.app.ActivityThread.main(ActivityThread.java:5417)  
     at java.lang.reflect.Method.invoke(Native Method)  
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
    Caused by: java.lang.IllegalArgumentException: Conflicting getter definitions for property "changingConfigurations": android.app.Activity#isChangingConfigurations(0 params) vs android.app.Activity#getChangingConfigurations(0 params) 
     at com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.getGetter(POJOPropertyBuilder.java:190) 
     at com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.getAccessor(POJOPropertyBuilder.java:283) 
     at com.fasterxml.jackson.databind.ser.BeanSerializerFactory.removeIgnorableTypes(BeanSerializerFactory.java:678) 
     at com.fasterxml.jackson.databind.ser.BeanSerializerFactory.findBeanProperties(BeanSerializerFactory.java:557) 
     at com.fasterxml.jackson.databind.ser.BeanSerializerFactory.constructBeanSerializer(BeanSerializerFactory.java:373) 
     at com.fasterxml.jackson.databind.ser.BeanSerializerFactory.findBeanSerializer(BeanSerializerFactory.java:268) 
     at com.fasterxml.jackson.databind.ser.BeanSerializerFactory._createSerializer2(BeanSerializerFactory.java:213) 
     at com.fasterxml.jackson.databind.ser.BeanSerializerFactory.createSerializer(BeanSerializerFactory.java:152) 
     at com.fasterxml.jackson.databind.SerializerProvider._createUntypedSerializer(SerializerProvider.java:873) 
     at com.fasterxml.jackson.databind.SerializerProvider._createAndCacheUntypedSerializer(SerializerProvider.java:833) 
     at com.fasterxml.jackson.databind.SerializerProvider.findValueSerializer(SerializerProvider.java:387)  
     at com.fasterxml.jackson.databind.SerializerProvider.findTypedValueSerializer(SerializerProvider.java:478)  
     at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:97)  
     at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:2593)  
     at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:2542)  
     at com.firebase.client.Firebase.setValueInternal(Firebase.java:346)  
     at com.firebase.client.Firebase.setValue(Firebase.java:248)  
     at com.example.lerun.crazybugs.User.onCreate(User.java:38)  
     at android.app.Activity.performCreate(Activity.java:6237)  
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)  
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)  
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
     at android.app.ActivityThread.-wrap11(ActivityThread.java)  
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
     at android.os.Handler.dispatchMessage(Handler.java:102)  
     at android.os.Looper.loop(Looper.java:148)  
     at android.app.ActivityThread.main(ActivityThread.java:5417)  
     at java.lang.reflect.Method.invoke(Native Method)  
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  

:私は次のエラーを取得

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 

import com.firebase.client.Firebase; 

public class User extends AppCompatActivity { 
    private int birthYear; 
    private String fullName; 

    public User() { 

    } 

    public User(String fullName, int birthYear) { 
     this.fullName = fullName; 
     this.birthYear = birthYear; 
    } 

    public long getBirthYear() { 
     return birthYear; 
    } 

    public String getFullName() { 
     return fullName; 
    } 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_user); 

     Firebase.setAndroidContext(this); 
     Firebase ref = new Firebase("https://mybabysit.firebaseio.com/"); 
     Firebase alanRef = ref.child("users").child("alanisawesome"); 
     User alan = new User("Alan Turing", 1912); 
     alanRef.setValue(alan); 
    } 
} 

:私は

私のコードのスナップショットを作成するために解析できませんでした。このエラーを取得していますこれは非常に簡単になるでしょう。ありがとう。

+2

あなたのアクティビティのサブクラスではなく、スタンドアロンクラスの 'User'を作成します。 –

+0

@ qbix愛されて感謝しています。 私は初心者です。それがなぜ重要なのかを詳しく説明できますか? –

+0

あなたの 'User'クラスは' AppCompatActivity'から数十のプロパティを継承します。これらのプロパティの多くは、Firebaseのシリアル化/非直列化の要件を満たしていません。 –

答えて

0

だと思います。alanRefこれらのメンバーはあなたの火事ベースのURLとは何の関係もありません。 onCreateでこれを変更します。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_user); 

    Firebase.setAndroidContext(this); 

    Firebase alanRef = new Firebase("https://mybabysit.firebaseio.com/"); 
    alanRef.child("users").child("alanisawesome"); 
    User alan = new User("Alan Turing", 1912); 
    alanRef.setValue(alan); 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_user); 

    Firebase.setAndroidContext(this); 
    Firebase ref = new Firebase("https://mybabysit.firebaseio.com/"); 
    Firebase alanRef = ref.child("users").child("alanisawesome"); 
    User alan = new User("Alan Turing", 1912); 
    alanRef.setValue(alan); 
} 

何が起こるか見てみましょう。

+0

これはエラーの原因ではありません。さらに、第1コードスニペットと第2コードスニペットの間に機能的な違いはなく、まったく同じように動作します。 – jonnydee

+0

@jonnydee、* alanRef *オブジェクトは、* ref *の子としてインスタンスを持ち、DataBaseのベースURLへのポインタを持たないでしょうか? – Franklyn

+0

Firebaseのリファレンスは不変ですが、alanRefは実際には依然としてデータベースのルートを指しています。あなたは常に子の戻り値を使用する必要があります。 – jonnydee

1

私のコメントに対するあなたの返答で、あなたは詳細を尋ねました。私は主題に関する権威ではありませんが、私はthe documentationを読むことから学んだことを共有し、ここではトピックを閲覧しています。

投稿したスタックトレースは、古いバージョンのFirebaseを使用していることを示しています。Jackson libraryを使用してデータをシリアル化しています。現在のバージョン9.0.2では、Jacksonを使用しておらず、サポートされているものに違いがあります。引き続き古いバージョンを使用している場合は、詳細な説明についてはSO question/answerをご覧ください。

ジャクソンと現在の実装の両方で、introspection/reflectionを使用してPOJOをシリアル化/逆シリアル化します。この処理では、POJOが構造と命名に関する特定の規則に従うことが期待されます。ドキュメントはこの領域で少し薄いです。関連するSOの質問を参照することで、ドキュメンテーションでカバーされていない問題の回答を見つけることがよくあります。いくつかの例:inheritance,getter methods,enums。私の推薦は:保つことは簡単で、実証済みの例に従ってください。

あなたが経験した失敗の原因は何もわかりませんが、AppCompatActivityから始めて、Jacksonのイントロスペクション処理がUserクラスとそのすべてのスーパークラスの解析に圧倒されたことは容易に想像できます。

0

です。古い文書を使用しています。もしあなたがtop of the link you providedにスクロールしてもそうです。

レガシーDOCS


ここで問題に表示しているとはいえ、このラインです。

public class User extends AppCompatActivity { 

ユーザーは、残念なことに、アクティビティであると思われるようです。

別のUser.javaファイルをユーザークラスの内容で作成します。

また、提供したリンクの例も表示されます。

public class User { 

これはアクティビティを拡張していません。

onCreate以外のものはすべて削除し、アクティビティクラスのAndroid命名規則に従ってください。

public class UserActivity extends AppCompatActivity { 
関連する問題