0

I'm using GeoFire's geoFire.queryAtLocation() method to retrieve data from my FirebaseDatabase.

The problem is that I'm getting java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference while trying to do so.

Here's my code:

geoQuery = geoFire.queryAtLocation(new GeoLocation(currentLatDouble, currentLngDouble), 0.5);

        geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
            @Override
            public void onKeyEntered(String key, GeoLocation location) {

    databaseReference.child("requests").addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            Map<String, String> newRequest = (Map<String, String>) dataSnapshot.getValue();
                            imageUID = newRequest.get("imageUIDh");
                            hDescription = newRequest.get("hDescription");
                            currentLat = newRequest.get("currentLat");
                            currentLng = newRequest.get("currentLng");
                            postedBy = newRequest.get("postedBy");
                            postedAtTime = newRequest.get("postedAtTime");
                            postedOnDate = newRequest.get("postedOnDate");
                            utcFormatDateTime = newRequest.get("utcFormatDateTime");

                            String timeStr = utcFormatDateTime;
                            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                            df.setTimeZone(TimeZone.getTimeZone("UTC"));
                            Date date = null;
                            try {
                                // error on the line below
                                date = df.parse(timeStr);
                                //
                            } catch (ParseException e) {
                                e.printStackTrace();
                            }
                            df.setTimeZone(TimeZone.getDefault());
                            final String persisted = df.format(date);

                            // Parse string from DB - UTC timezone
                            Date parsed = null;
                            try {
                                parsed = df.parse(persisted);
                            } catch (ParseException e) {
                                e.printStackTrace();
                            }

                            // Now convert to whatever timezone for display purposes
                            final SimpleDateFormat displayFormat = new SimpleDateFormat("h:mm a");
                            displayFormat.setTimeZone(TimeZone.getDefault());

                            formattedTime = displayFormat.format(parsed);

                            prepareDataForRequests();
                        }

                        @Override
                        public void onCancelled(DatabaseError databaseError) {
                            Snackbar snackbar = Snackbar
                                    .make(coordinatorLayout, databaseError.getMessage(), Snackbar.LENGTH_LONG);
                            snackbar.setDuration(Snackbar.LENGTH_SHORT);
                            snackbar.show();
                            progressBarLoadingRequests.setVisibility(View.INVISIBLE);
                        }
                    });
}

            @Override
            public void onKeyExited(String key) {

            }

            @Override
            public void onKeyMoved(String key, GeoLocation location) {

            }

            @Override
            public void onGeoQueryReady() {
                Toast.makeText(getBaseContext(), "geoQueries retrieved", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onGeoQueryError(DatabaseError error) {
                Toast.makeText(getBaseContext(), "Error retriving geoquery", Toast.LENGTH_SHORT).show();
            }
        });

I'm trying to figure out what's wrong, but I am unable to do.

What could possibly be wrong?

Please let me know.

Hammad Nasir
  • 2,889
  • 7
  • 52
  • 133
  • I don't think the error is in that code. Your NullPointerException is caused when you call `.length()` on something - something that I don't see in your above code. Make sure you initialize everything in your code. – TheAnonymous010 Jul 18 '16 at 02:26
  • Sir, the log showed me this line only. – Hammad Nasir Jul 18 '16 at 02:39

0 Answers0