0

I am using a framework called LibGdx, it is multiplatform, so when I need to write platform-specific code I need to create interfaces. For example, If I want to get a top score from my db I would create an interface-method called:

public int getTopScore();

In Android I then implement this interface and write the Firebase Logic:

@Override
public int getTopScore() {
    DatabaseReference topScoreRef = 
        leaderboardDataBase.getReference("top_score");
    topScoreRef.child("top_score").addValueEventListener(new 
        ValueEventListener() 
    {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
            //topScore is a member variable of the class
            topScore = snapshot.getValue(Integer.class);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
    return topScore;
}

This is always returning null and causing a NullPointer exception. I know it has to do with multithreading. Is there a way to wait for the other thread to finish before moving on or do I have to entirely restructure.

Thanks

EDIT: Here's the error:

04-11 22:02:33.542 30334-30334/com.samuel.doubledodge E/Error: 
java.lang.NullPointerException: Attempt to invoke virtual method 'int 
java.lang.Integer.intValue()' on a null object reference
   at com.samuel.doubledodge.AndroidDatabaseAccess$1.onDataChange(AndroidDatabaseAccess.java:56)
   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:135)
   at android.app.ActivityThread.main(ActivityThread.java:5466)
   at java.lang.reflect.Method.invoke(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:372)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:984)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807
Samuel M
  • 51
  • 1
  • 9

0 Answers0