因此,我试图开发Geolocation Android应用程序的第一步是获取位置 ,纬度和经度..但是当我使用我的方法“getlat”时,它总是返回0.0,与经度相同。
这是我获得纬度的方法
public Double getlat(String email) {
myRef=FirebaseDatabase.getInstance().getReference();
DatabaseReference rootRef = myRef.child("users").child(email);
rootRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists())
latitude = dataSnapshot.child("lat").getValue(Double.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return latitude;
}
答案 0 :(得分:0)
两种选择:
ValueEventListener isasynchronous意味着它将在方法getLat的其他线程并行中执行。从上到下,调用getLat然后对Firebase的查询是对另一个线程的动作,并且该代码将在getLat方法内的代码的第一个段落,这意味着getLat中的代码执行仍在运行,下一个是返回声明。返回可以在Firrbase查询完成之前或之后发生。