2017-05-28 1 views
0

Ich bin neu in Android Studio und ich habe ein Problem mit longitude und latitude Werte zu einer Google-Karte. Ich erhalte eine UncaughtException: java.lang.NumberFormatException Fehler wie folgt:Firebase: NumberFormatException auf reference.child ("key"). ToString();

UserMapActivity

package uk.co.jaunt_app.jaunt; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.widget.EditText; 

import com.firebase.client.DataSnapshot; 
import com.firebase.client.Firebase; 
import com.firebase.client.FirebaseError; 
import com.firebase.client.ValueEventListener; 
import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.OnMapReadyCallback; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 
import com.google.firebase.auth.FirebaseAuth; 
import com.google.firebase.auth.FirebaseUser; 

public class UserMapActivity extends FragmentActivity implements OnMapReadyCallback { 

    private GoogleMap mMap; 
    EditText MapIDText; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_user_map); 
     SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 

     MapIDText = (EditText) findViewById(R.id.getMapIDText); 

     Intent intent = getIntent(); 
     String str = intent.getStringExtra("mapid"); 
     MapIDText.setText(str); 

    } 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 

     Firebase.setAndroidContext(this); 

     final Firebase ref = new Firebase(Config.FIREBASE_URL); 
     final Firebase usersRef = ref.child("Users"); 
     FirebaseUser currentFirebaseUser = FirebaseAuth.getInstance().getCurrentUser(); 
     final String uid = currentFirebaseUser.getUid(); 
     final String mapidend = MapIDText.getText().toString().trim(); 
     final Firebase userMap = usersRef.child(uid); 

     userMap.child(mapidend).addListenerForSingleValueEvent(new ValueEventListener() { 

      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 

       if (dataSnapshot.exists()) { 

        Firebase userMap = usersRef.child(uid).child(mapidend); 
        String mapstartlat = userMap.child("startLat").toString(); 
        String mapstartlong = userMap.child("startLong").toString(); 
        double startlat = Double.valueOf(mapstartlat); 
        double startlong = Double.valueOf(mapstartlong); 

        LatLng StartEnd = new LatLng(startlat, startlong); 
        mMap.addMarker(new MarkerOptions().position(StartEnd)); 
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(StartEnd,18)); 
       } else { 

       } 

      } 
      @Override 
      public void onCancelled(FirebaseError firebaseError) { 
       throw firebaseError.toException(); 
      } 
     }); 
    } 
} 

Fehlercode

075-13075/? E/UncaughtException: java.lang.NumberFormatException: For input string: "https://jaunt-ddc86.firebaseio.com/Users/NUqyLWTYFSg4a2vHqLla73OjLeP2/55657f79-6f40-4f3e-a889-cea935b0fec7/startLat" 
     at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1306) 
     at java.lang.Double.valueOf(Double.java:511) 
     at uk.co.jaunt_app.jaunt.UserMapActivity$1.onDataChange(UserMapActivity.java:65) 
     at com.firebase.client.Query$1.onDataChange(Query.java:158) 
     at com.firebase.client.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:45) 
     at com.firebase.client.core.view.DataEvent.fire(DataEvent.java:45) 
     at com.firebase.client.core.view.EventRaiser$1.run(EventRaiser.java:38) 
     at android.os.Handler.handleCallback(Handler.java:751) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:154) 
     at android.app.ActivityThread.main(ActivityThread.java:6776) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) 
+0

haben Sie versucht, den Druck, was 'mapstartlat' war, bevor Sie es zu einem doppelten umgewandelt? –

+0

Sie versuchen, diese Zeichenfolge zu verdoppeln - "https://jaunt-ddc86.firebaseio.com/Users/NUqyLWTYFSg4a2vHqLla73OjLeP2/55657f79-6f40-4f3e-a889-cea935b0fec7/startLat" –

Antwort

3

Sie sich bewerben gerade toString auf dem Weg, so dass Sie einen String Pfad bekommen

NumberFormatException: For input string: 
"https://jaunt-ddc86.firebaseio.com/Users/NUqyLWTYFSg4a2v.../startLat" 

Lösung: verwenden getValue() Funktion die Daten abzurufen und verwenden auch dataSnapshot Referenz

String mapstartlat = dataSnapshot.child("startLat").getValue().toString(); 
String mapstartlong = dataSnapshot.child("startLong").getValue().toString(); 
+0

Das funktionierte, vielen Dank für die Erklärung Es für mich! – AngryCubeDev

+0

ich bin froh, dass ich helfen konnte, glückliche Codierung –

Verwandte Themen