Прежде всего, вы нигде не вызывали метод getUserData()
.Я читал, что вы пытались добавить эту логику и в onCreate()
, но она не работала.
Добавление слушателя не означает, что вы получите то, что от него ожидают, мгновенно.
Используйте метод onMapReady()
только для настройки карты, настройки которой не зависят от User
.Добавляйте / изменяйте маркер карты только при обнаружении изменений в данных User
.Смотрите изменения:
public void getUserData(){
String uID = mAuth.getCurrentUser().getUid();
myRef.child(uID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
dataSnapshot.getChildren();
user = dataSnapshot.getValue(User.class);
LatLng userL = new LatLng(user.getLat(),user.getLng());
if(mMap!=null){
mMap.clear();
mMap.addMarker(new MarkerOptions().position(userL).title("Your
Location"));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(userL,17));
}
Toast.makeText(Profile.this, "" + user.lng, Toast.LENGTH_LONG).show(); // Prints the value normally!
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(Profile.this, "Failed to read from database!", Toast.LENGTH_LONG).show();
}
});
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
}
Пожалуйста, вызовите метод getUserData()
или переместите его код в onCreate()
.