2016-10-17 4 views
-1

ich Datenbank von Firebase verwenden, um gespeicherte Werte von Breiten- und Längengrad, ist das Problem, dass ich diesen Fehler an:ERROR: java.lang.IllegalArgumentException: ungültige Zuhörer: null

Attempt to invoke virtual method 'double android.location.Location.getLatitude()' on a null object reference 

I verwendet mit einer Klasse versucht für Methoden von onLocationChanged aber sende den gleichen Fehler.

Dies ist mein Code:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //Context Android 
    setContentView(R.layout.activity_); 
    Firebase.setAndroidContext(this); 
    //This class is to connect with firebase 
    Firebase referencia = new Firebase(Path.URL_FIREBASE); 

    lat = String.valueOf(location.getLatitude()); 
    lon = String.valueOf(location.getLongitude()); 

    LocationClass ll = new LocationClass(); 
    ll.setLatitud(lat); 
    ll.setLongitud(lon); 


    Firebase NuevaReferencia = referencia.child("Location").push(); 
    NuevaReferencia.setValue(ll); 




    locationManager = (LocationManager) getSystemService(android.content.Context.LOCATION_SERVICE); 

    if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
     // TODO: Consider calling 
     // ActivityCompat#requestPermissions 
     // here to request the missing permissions, and then overriding 
     // public void onRequestPermissionsResult(int requestCode, String[] permissions, 
     //           int[] grantResults) 
     // to handle the case where the user grants the permission. See the documentation 
     // for ActivityCompat#requestPermissions for more details. 
     return; 
    } 
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this.locationListener); 




    NuevaReferencia.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      for (DataSnapshot dataSnapshot1: dataSnapshot.getChildren()) { 

       LocationClass LL = dataSnapshot.getValue(LocationClass.class); 
       String string = "Longitude:"+LL.getLongituded()+"Latitude"+LL.getLatituded(); 
      } 
     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 
      System.out.println("The read failed: " + firebaseError.getMessage()); 
     } 
    }); 
+0

Sie haben zwei Fehler erwähnt: einen in Ihrem Titel und einen im Text Ihrer Frage. Welches ist es" – EJP

Antwort

0

Von dem, was ich verstehen kann, Ihr location Objekt verwendet bei lat = String.valueOf(location.getLatitude()); und lon = String.valueOf(location.getLongitude()); scheint null zu sein.

Für eine bessere Analyse, bitte ich Sie, Ihre Frage mit dem Code für diese ganze Klasse zu bearbeiten.

Verwandte Themen