2017-04-16 32 views
-1

Firebaseデータベースに情報を挿入しようとしていますが、上記のエラーが発生しています。java.lang.Long型のオブジェクトをcom.example.or.dancers.Info型に変換できません

のフルスタックトレース:

04-16 02:42:14.218 6214-6214/com.example.or.dancers E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.or.dancers, PID: 6214 
com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.Long to type com.example.or.dancers.Info 
    at com.google.android.gms.internal.zzbqi.zze(Unknown Source) 
    at com.google.android.gms.internal.zzbqi.zzb(Unknown Source) 
    at com.google.android.gms.internal.zzbqi.zza(Unknown Source) 
    at com.google.firebase.database.DataSnapshot.getValue(Unknown Source) 
    at com.example.or.dancers.Settings$1.onDataChange(Settings.java:187) 
    at com.google.android.gms.internal.zzbmz.zza(Unknown Source) 
    at com.google.android.gms.internal.zzbnz.zzYj(Unknown Source) 
    at com.google.android.gms.internal.zzboc$1.run(Unknown Source) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:158) 
    at android.app.ActivityThread.main(ActivityThread.java:7229) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 

マイオブジェクトモデル:

package com.example.or.dancers; 

public class Info { 

public String key; 
public String infoName; 
public int data; 

public Info() { 
} 

public Info(String key, String name, int data) { 
    this.key = key; 
    this.infoName = name; 
    this.data = data; 
} 
} 

retrieveData機能:

public void retrieveData() { 



    database.addValueEventListener(new ValueEventListener() { 

     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      for (DataSnapshot data : dataSnapshot.getChildren()) { 
       Info d = data.getValue(Info.class); 

       if(d.key.equals(info.key)){ 
        info =d; 
        return; 
       } 

      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 


    }); 

}//retrieveData function. 

私はこれで立ち往生し、そのせいで私は上を移動傾けます。 ご協力いただければ幸いです。

は値を取得する:

public Object getValue() { 
    return this.zzbXv.zzUY().getValue(); 
} 

public Object getValue(boolean var1) { 
    return this.zzbXv.zzUY().getValue(var1); 
} 

public <T> T getValue(Class<T> var1) { 
    Object var2 = this.zzbXv.zzUY().getValue(); 
    return zzbqi.zza(var2, var1); 
} 

public <T> T getValue(GenericTypeIndicator<T> var1) { 
    Object var2 = this.zzbXv.zzUY().getValue(); 
    return zzbqi.zza(var2, var1); 
} 
+0

data.getValue(Info.class)だけでなく、長い値 –

+0

を返し、 'DataSnapshot.getValueは()' 'ながらLong'オブジェクトの値を返すように見えますあなたのクラスは 'Info'はLong''型のオブジェクトをisn'tので、あなたはあなたの と は、メインスレッド上で追加に感謝し、 – Opiatefuchs

+0

は非常に速く私たちのgetValue() 'メソッド...'のコードを表示する必要があります –

答えて

0

私はあなたが値があなたのInfoオブジェクトに渡したものを見つけるためにデバッグするべきだと思います。そのため情報にロング変換するために、関連した、このエラーの:

com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.Long to type com.example.or.dancers.Info 
+0

私はデータが私に与えるものを印刷するためにログを試しましたが、それでもクラッシュします。 –