Android Retrieve Data

504 views
Skip to first unread message

thomas...@gmail.com

unread,
May 23, 2016, 6:57:14 PM5/23/16
to Firebase Google Group
I'm trying to retrieve some of the data in my firebase database.  I am a complete newbie with firebase and am in the process of transitioning from parse.  I have followed the guides on the firebase website, but can't get the information I want.  I always error unless I change the dataSnapshot.getValue() to be a generic object instead of the WebData class I made.  Any help would be greatly appreciated. 

public class App extends Application {

   
public static WebData webData;

   
public class WebData
   
{
       
public String PointsURL;
       
public String[] FlyerURL = new String[2];
       
public String[] ResultsURL = new String[2];

       
public WebData() {}

       
@Exclude
        public String ignoreThisField;
   
}

   
@Override
    public void onCreate(){
       
super.onCreate();
        load_WebData
();
   
}

   
private void load_WebData()
   
{
       
DatabaseReference ref = FirebaseDatabase.getInstance().getReferenceFromUrl("https://torcs.firebaseio.com/WebData/");

       
ref.addValueEventListener(new ValueEventListener() {
           
@Override
            public void onDataChange(DataSnapshot dataSnapshot) {
               
WebData value = dataSnapshot.getValue(WebData.class);
               
Log.d("", "Value is: " + value);
           
}

           
@Override
            public void onCancelled(DatabaseError databaseError) {
               
Log.e("", "Failed to read value.", databaseError.toException());
           
}
       
});
   
}
}

error I am getting:

com.thomas_sell.torcs E/AndroidRuntime: FATAL EXCEPTION: main
                                                                       Process: com.thomas_sell.torcs, PID: 11123
                                                                       com.google.firebase.database.DatabaseException: Class com.thomas_sell.torcs.App$WebData is missing a constructor with no arguments
                                                                           at com.google.android.gms.internal.zzaix$zza.zze(Unknown Source)
                                                                           at com.google.android.gms.internal.zzaix$zza.zzaC(Unknown Source)
                                                                           at com.google.android.gms.internal.zzaix.zzd(Unknown Source)
                                                                           at com.google.android.gms.internal.zzaix.zzb(Unknown Source)
                                                                           at com.google.android.gms.internal.zzaix.zza(Unknown Source)
                                                                           at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
                                                                           at com.thomas_sell.torcs.App$1.onDataChange(App.java:45)
                                                                           at com.google.android.gms.internal.zzafp.zza(Unknown Source)
                                                                           at com.google.android.gms.internal.zzagp.zzSu(Unknown Source)
                                                                           at com.google.android.gms.internal.zzags$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: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)




 

Frank van Puffelen

unread,
May 23, 2016, 8:56:49 PM5/23/16
to Firebase Google Group
Your WebData class is an inner class of Application. That means that the Java compiler adds an implicit reference to the containing Application instance to each WebData instance.

The solution is simple: mark the WebData class as static.

    public static class WebData



   puf
Reply all
Reply to author
Forward
0 new messages